SQL查询答案

时间:2015-03-11 18:01:43

标签: sql sql-server

使用SQL我选择以下内容:

SELECT itemid, custid, email FROM tableA;  

我可以为每个itemid提供多个Custid,只有一个电子邮件,例如

itemid1, custid, email
itemid2, custid, email
itemid3, custid, email

如何指定每个客户只有一封电子邮件,他有3个itemid?

感谢

2 个答案:

答案 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)

您可以对所有custidemail使用此功能:

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