第一个查询:
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
我如何存档?
答案 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