当它们共享一个公共标识符时,SQL将两行中的数据合并为一行

dav*_*814 1 sql sql-server join report

对于我正在研究的报告,我需要根据特定列中的行共享在单独列中的数据来合并数据。所有数据均来自同一表:

      ID       |        Name        | 
    10000             Jane Doe            
    10000             John Smith
    50000             Jack Bauer
    50000             Jon Snow
    90000             Jack Bauer
Run Code Online (Sandbox Code Playgroud)

当它们共享一个公共ID值时,我需要以某种方式将“名称”行组合在一起:

      ID       |        Name        | 
    10000             Jane Doe, John Smith            
    50000             Jack Bauer, Jon Snow
    90000             Jack Bauer
Run Code Online (Sandbox Code Playgroud)

该ID不是primary key该表的ID ,但它是我需要的报告上的唯一值。

我大部分时间都是自学成才,并且缺乏SQL词汇量。我不太想如何表达代码以实现此目的。逻辑方面的任何帮助将不胜感激!

戴夫

M.A*_*Ali 5

测试数据

DECLARE @TABLE TABLE (ID INT, Name VARCHAR(50))
INSERT INTO @TABLE VALUES
(10000,'Jane Doe'),            
(10000,'John Smith'),
(50000,'Jack Bauer'),
(50000,'Jon Snow'),
(90000,'Jack Bauer')
Run Code Online (Sandbox Code Playgroud)

询问

SELECT t.ID
      ,STUFF((SELECT ', ' + Name
              FROM @Table
              WHERE ID = t.ID 
              FOR XML PATH(''),TYPE)
              .value('.','NVARCHAR(MAX)'),1,2,'') AS Names
FROM @TABLE t
GROUP BY t.ID
Run Code Online (Sandbox Code Playgroud)

结果集

????????????????????????????????
?  ID   ?        Names         ?
????????????????????????????????
? 10000 ? Jane Doe, John Smith ?
? 50000 ? Jack Bauer, Jon Snow ?
? 90000 ? Jack Bauer           ?
????????????????????????????????
Run Code Online (Sandbox Code Playgroud)