将一列转置为一行。
我使用以下查询获得了电子邮件地址列表:
select
user_login.email_address
from
user.login with(nolock)
结果示例如下:
Email
--------------------
abc@helloworld.com
no_email
romeo@abc.com.au
Juliet@abc.com.au
我想要做的是运行查询,转置并将结果作为文本(在结果之间使用分号),因此我可以自动将结果粘贴到如下的电子邮件中:
期望的结果:
abc@helloworld.com; romeo@aboc.com.au; juliet@abc.com.au
我试图理解PIVOT和UNPIVOT函数,但我只是迷失了如何在结果之间插入分号。希望有人能提供帮助。感谢。
答案 0 :(得分:1)
如果您使用的是SQL Server
select top 1
EMAIL =
STUFF(( SELECT '; '+ a.email_address AS [text()]
FROM email_address a
FOR XML PATH('')
), 1, 1,'')
from email_address
答案 1 :(得分:0)
您可以使用STUFF https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql
https://sqlwhisper.wordpress.com/2013/03/24/stuff-and-for-xml-path-for-string-concatenation/
select distinct sno ,
STUFF((Select ','+Scity
from @Test T1
where T1.sno=T2.sno
FOR XML PATH('')),1,1,'') from @Test T2