打印整个列号,并使用逗号分隔的每个数字的结果查询

时间:2017-05-16 05:47:50

标签: sql sql-server

第一个查询:

 SELECT [name]
 FROM [MyDB].[dbo].[abcCategories]
 where categoryID in (SELECT categoryId FROM [MyDB].[dbo].[CategorySets]
                      where setId='123456')

我得到了

keyword1
keyword2 
keyword3
keyword4
keyword5

号码'123456' 来自第二个查询:

SELECT [setId]   
FROM [MyDB].[dbo].[CategorySets]

这将返回一列中的所有数字:

12
123
1234
12345
123456
1234567
12345678

所以现在我需要先对第二个查询中的所有值进行查询。 我想在一列中打印所有这些数字,并在下一列中相应地打印第一个查询的结果,并用逗号分隔:

12       | abc, xyz, asdf,abc
123      | ..., ...,....,...
1234     | asfa,fdasf,asdfsa,sdfa
.....    |
123456   | keyword1,keyword2,keyword3,keyword4,keyword5
......   |
12345678 | keyword6, keyword 7

我如何存档?

1 个答案:

答案 0 :(得分:1)

这将有效..使用For XML PATH将逗号分隔的NAME列连接起来。并删除第一个逗号。

;WITH CTE AS(
SELECT C.[setId] , AC.[name]
FROM [MyDB].[dbo].[abcCategories] AC
INNER JOIN [MyDB].[dbo].[CategorySets] C ON AC.categoryID= C.categoryId

)
SELECT C1.[setId]
, STUFF((SELECT ','+C2.[name] FROM CTE C2 
WHERE C1.[setId] = C2.[setId] FOR XML PATH('') ),1,1,'')
FROM CTE C1