分组和 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 进行排序和分组

XSLT:复杂分组的问题

XML 解析 - 使用 KissXML 和 XPath 将属性分组到 nsdictionary

Django学习开始---路由层

For loop python - 按年份和分组操作