分组和 FOR XML PATH
Posted
技术标签:
【中文标题】分组和 FOR XML PATH【英文标题】:group by and FOR XML PATH 【发布时间】:2019-11-06 10:39:08 【问题描述】:在 sql server 中使用 xml 进行路径和分组时遇到问题
我有这张桌子:
谢谢
需要得到这个:
【问题讨论】:
请发布您的尝试 这里的大多数人想要格式化的文本而不是图像。 您的 SQL Server 版本是多少? 我无法添加文本而不是图像,它被破坏了 为什么要在'gig'
之前而不是'gama'
之前有一个空格?
【参考方案1】:
我假设这 3 列来自同一个表。 我创建了您给定的数据,因此我可以测试我的解决方案是否有效。它确实:)
create table table1 (column1 int, column2 nvarchar(1), column3 nvarchar(150))
insert into table1 values (1, 'A', 'Alpha')
, (1, 'b', 'beta')
, (1, 'b', 'gama')
, (2, 'A', 'delta')
, (2, 'b', 'ef')
, (2, 'b', 'gig')
SELECT
t1.column1
, t1.column2
, STUFF((SELECT ', ' + t2.column3
FROM table1 t2
WHERE t2.column1 = t1.column1
and t2.column2 = t1.column2
FOR XML PATH('')), 1, 1, '') as new_row
FROM table1 t1
GROUP BY t1.column1, t1.column2
ORDER BY 1
【讨论】:
以上是关于分组和 FOR XML PATH的主要内容,如果未能解决你的问题,请参考以下文章
利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)
for-each 并使用 xslt 对 xml 进行排序和分组