SQL Server-尝试格式化表,可能使用PIVOT
我有这张桌子SQL Server-尝试格式化表,可能使用PIVOT,sql,sql-server,pivot-table,Sql,Sql Server,Pivot Table,我有这张桌子 Email Username ------------------------- ------------------------- a@a.com a1 a@a.com a2 a@a.com a3
Email Username
------------------------- -------------------------
a@a.com a1
a@a.com a2
a@a.com a3
a@a.com a4
b@b.com b1
b@b.com b2
b@b.com b3
b@b.com b4
c@c.com c1
c@c.com c2
c@c.com c3
c@c.com c4
(12 row(s) affected)
但我希望每个电子邮件地址都出现一次,然后如果可能的话,在它后面列出所有相关的用户名
感谢任何帮助,
干杯
编辑
好的,很明显,所有的用户名都放在一列中,所有的用户名都连在一起,听起来有点傻,但这就是我被要求的
我想要的输出是
Email Username
------------------------- -------------------------
a@a.com a1, a2, a3, a4
b@b.com b1, b2, b3, b4
c@c.com c1, c2, c3, c4
d@d.com d1, d2, d3, d4
使用XML路径的
尝试此操作
select
Email,
Username =
stuff((
select
', ' + t2.Username
from #table1 t2
where
t2.Email = t1.Email
group by t2.Username
for xml path(''), type).value('.', 'varchar(max)'
), 1, 2, '')
from #table1 t1
你看起来像这样?你能把你想要的东西贴出来吗
select
Email,
Username =
stuff((
select
', ' + t2.Username
from #table1 t2
where
t2.Email = t1.Email
group by t2.Username
for xml path(''), type).value('.', 'varchar(max)'
), 1, 2, '')
from #table1 t1