我拥有的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
的单个单元格中?
答案 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