我是SQL新手(运行SQL Server 2012),我正在运行的查询正在返回这些结果。
IDNum Email
----------------
1 a@a.com
1 b@b.com
1 c@c.com
2 d@d.com
2 e@e.com
3 f@f.com
3 g@g.com
3 h@h.com
4 i@i.com
5 j@j.com
5 k@k.com
我想获得以下结果集(每个id唯一的逗号分隔列表)
IDNum Emails
---------------------------------
1 a@a.com,b@b.com,c@c.com
2 d@d.com,e@e.com
3 f@f.com,g@g.com,h@h.com
4 i@i.com
5 j@j.com,k@k.com
我一直试图从其他问题中得到一些答案,但没有运气。我确定这是我经验不足的一些组合。我发现的所有其他问题只是单个表的结果。我的查询是从多个表中获取结果,如果这会产生影响,则类似于
SELECT DISTINCT
s.idnum, e.email
FROM
student s
JOIN
email e ON e.guid = s.guid
WHERE
s.activeYear = 1 AND e.activeEmail = 1
有人可以帮忙吗?感谢。
****** ****** UPDATE
我在这里和其他网站上阅读了一些文章后,最终使用了以下查询。希望这可以帮助将来的某个人。
USE databaseName
SELECT s.idnum,
STUFF(( SELECT ',' + e.email AS [text()]
FROM email e
WHERE
e.guid = s.guid AND e.activeEmail = 1
FOR XML PATH('')
), 1, 1, '' )
AS emails
FROM student s
WHERE s.activeYear = 1
答案 0 :(得分:0)
在Oracle中,您可以使用LISTAGG函数执行此操作,但对于SQL-Server尝试此问题,那里有几个不同的选项: