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创建逗号分隔数组,同时保持父类别信息完整[重复]的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL -- 将逗号分隔的列转换为多列

PHP:使用逗号分隔值创建字符串,但字符串末尾没有逗号

使用 SSIS OR T-SQL 将一列带引号和不带引号的逗号分隔值拆分为多列

将逗号分隔属性另存为新记录

RoR-带逗号分隔的类别链接

PL SQL从用逗号分隔的字符串创建数字数组[重复]