sal*_*ere 2 t-sql sql-server coalesce sql-server-2008
我正在使用 SSMS 2008 R2,并且只是尝试将多行合并为一行。我认为这应该很简单,但目前它在每一行中重复数据。考虑:
create table test
(
Name varchar(30)
)
insert test values('A'),('B'),('C')
select * from test
select distinct Name, coalesce(Name + ', ', '')
from test
Run Code Online (Sandbox Code Playgroud)
我怎样才能重写它来实现一行:A,B,C
SELECT STUFF(( SELECT ', ' + Name\n from #test\n FOR XML PATH(''), TYPE).\n value('.','NVARCHAR(MAX)'),1,2,'')\n\n\nRESULT: A, B, C\nRun Code Online (Sandbox Code Playgroud)\n\n我确信这不是您尝试连接的行的确切样子,因此请参阅下面的略有不同的数据集以及您将如何对其进行此类操作
\n\n测试数据
\n\ncreate table #test\n(\nId INT,\nName varchar(30)\n)\ninsert #test values\n(1,'A'),(1,'B'),(1,'C'),(2,'E'),(2,'F'),(2,'G')\nRun Code Online (Sandbox Code Playgroud)\n\n询问
\n\nselect t.Id\n , STUFF(( SELECT ', ' + Name\n from #test\n WHERE Id = T.Id\n FOR XML PATH(''), TYPE).\n value('.','NVARCHAR(MAX)'),1,2,'') AS List\nFROM #test t\nGROUP BY t.Id\nRun Code Online (Sandbox Code Playgroud)\n\n结果集
\n\n\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 Id \xe2\x95\x91 List \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 1 \xe2\x95\x91 A, B, C \xe2\x95\x91\n\xe2\x95\x91 2 \xe2\x95\x91 E, F, G \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
29885 次 |
| 最近记录: |