如何将多个SQL行连接成int

时间:2016-03-30 15:56:30

标签: sql sql-server tsql

我拥有的SQL表如下:

ID     Name   NameID 
1      John   1
1      Dan    2
1      Jill   3
2      Jack   4
2      Sam    5

我需要这个表格如下:

ID      Name             NameID 
1       John, Dan, Jill  1, 2, 3
2       Jack, Sam        4, 5

我现在的SQL查询如下:

SELECT ID, 
    STUFF((
        SELECT N', ' + Name 
        FROM Table2 b 
        WHERE b.NameID = a.NameID 
        FOR XML PATH (''),TYPE).value('text()[1]','nvarchar(max)'
        ),1,2,N'') AS Name,
    NameID
FROM Table1 a

该查询执行了我对Name列所需的操作,但是当我尝试为NameID列执行此操作时,它不起作用。我需要将int保留为int的所有单元格。我不能将它们作为string,因为我需要通过NameID过滤表格。如何将所有NameID放入每个ID的单个单元格中?

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

SELECT DISTINCT ID,

    STUFF((
        SELECT N', ' + Name 
        FROM Table1 b 
        WHERE b.ID = a.ID 
        FOR XML PATH (''),TYPE).value('text()[1]','nvarchar(max)'
        ),1,2,N'') AS Name,

    STUFF((
        SELECT N', ' + CONVERT(VARCHAR(20), NameID) 
        FROM Table1 b 
        WHERE b.ID = a.ID 
        FOR XML PATH (''),TYPE).value('text()[1]','nvarchar(max)'
        ),1,2,N'') AS NameID

FROM Table1 a