T-SQL创建逗号分隔数组,同时保持父类别信息完整[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-SQL创建逗号分隔数组,同时保持父类别信息完整[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
假设我有一个包含ProductID和OrderNumber的表。有多个产品,每个产品都有多个订单。
我想要做的是转:
+-----------+-------------+
| ProductID | OrderNumber |
+-----------+-------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 2 | 5 |
| 3 | 6 |
| 3 | 7 |
+-----------+-------------+
成:
+-----------+-------------+
| ProductID | OrderNumber |
+-----------+-------------+
| 1 | 1, 2, 3 |
| 2 | 4, 5 |
| 3 | 6, 7 |
+-----------+-------------+
很容易创建一个逗号分隔的所有订单号列表,如下所示:Convert multiple rows into one with comma as separator。
我无法弄清楚的是如何在保持ProductID信息完整的同时从行创建数组。
答案
你需要使用如下 -
SELECT b.ProductID
, STUFF
((
SELECT CONCAT(', ' , a.OrderNumber)
FROM PO a
WHERE ( a.ProductID = b.ProductID )
FOR XML PATH('')
) ,1,2,'')
AS OrderNumber
FROM PO b
GROUP BY b.ProductID
OUTPUT
ProductID OrderNumber
----------- -------------------
1 1, 2, 3
2 4, 5
3 6, 7
(3 rows affected)
有关详细信息,请参阅 -
https://msbiskills.com/2017/12/25/sql-puzzle-dynamic-pivot-puzzle/
要么
https://msbiskills.com/2015/03/25/t-sql-query-group-by-xml-path-puzzle/
以上是关于T-SQL创建逗号分隔数组,同时保持父类别信息完整[重复]的主要内容,如果未能解决你的问题,请参考以下文章