使用SQL我选择以下内容:
SELECT itemid, custid, email FROM tableA;
我可以为每个itemid
提供多个Custid
,只有一个电子邮件,例如
itemid1, custid, email
itemid2, custid, email
itemid3, custid, email
如何指定每个客户只有一封电子邮件,他有3个itemid?
感谢
答案 0 :(得分:1)
select count(itemid), custid, email
from tableA
group by email, custid
在澄清OP正在加入表并希望一行中的项目列表与电子邮件地址后,我们有这样的查询:
select b.custid, b.email,
itemids = STUFF((select ',' + itemid
from tableA a
where a.custid = b.custid FOR XML PATH('')), 1, 1, '')
from tableB b
这样做会,但如果您需要有关这些项目的更多信息,我强烈建议您获取客户列表,然后循环浏览这些项目以获取项目信息。
答案 1 :(得分:0)
您可以对所有custid
和email
使用此功能:
ALTER FUNCTION itemrow(@custid int, @email varchar(max)) --check your datatypes
RETURNS VARCHAR(max) AS
BEGIN
DECLARE @itemrow VARCHAR(max)
SELECT @itemrow = COALESCE(@itemrow + ', ', '') + COALESCE(itemid,'')
FROM tableA
where email = @email
and custid = @custid
return @itemrow
END