将结果转换为逗号分隔列表
Posted
技术标签:
【中文标题】将结果转换为逗号分隔列表【英文标题】:Turning results in comma separated list 【发布时间】:2015-01-27 16:31:02 【问题描述】:我正在使用此代码得到以下结果:
Select [Doc #],
[Production Number]
From vwLiveDocuments
Where [production number] IN
(
SELECT [production number]
FROM vwLiveDocuments
where [tags] LIKE N'%name of tag%'
Group by [production number]
Having Count (*) > 1
)
我会得到以下结果:
'Doc #' 'Production number'
117611 CGI00069441
47864 CGI00069441
47865 CGI00069457
117901 CGI00069457
47866 CGI00069460
117904 CGI00069460
121479 CGI00071490
53934 CGI00071490
您可以在生产编号中看到重复的结果。我想要的是转换这个列表以获得以下结果:
'Production number' 'Doc #'
CGI00069441 117611,47864
CGI00069457 47865,117901
CGI00069460 47866,117904
CGI00071490 121479,53934
对于每个重复的“产品编号”,我想获得一个以逗号分隔的重复文档列表。
【问题讨论】:
您使用的是哪个 RDBMS? 请在编辑问题时正确格式化您的代码... 【参考方案1】:使用For xml path()
技巧来做到这一点。
;WITH cte
AS (SELECT [Doc #],
[Production Number]
FROM vwLiveDocuments
WHERE [production number] IN (SELECT [production number]
FROM vwLiveDocuments
WHERE [tags] LIKE N'%20150126-Appendix B%'
GROUP BY [production number]
HAVING Count (*) > 1))
SELECT [Production number],
Stuff((SELECT ',' + CONVERT(VARCHAR(10), [doc #])
FROM cte b
WHERE b.[Production number] = a.[Production number]
FOR xml path('')), 1, 1, '') [Doc #]
FROM cte a
GROUP BY [Production number]
ORDER BY [Production Number] ASC
【讨论】:
太棒了.. 工作就像一个魅力.. 非常感谢,非常感谢。 抱歉,刚接触该网站。以上是关于将结果转换为逗号分隔列表的主要内容,如果未能解决你的问题,请参考以下文章