Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过SQL Server汇总每个orderID的文章_Sql Server - Fatal编程技术网

Sql server 通过SQL Server汇总每个orderID的文章

Sql server 通过SQL Server汇总每个orderID的文章,sql-server,Sql Server,我有以下资料: OrderID | Articlenumber| --------+--------------+ 1 | 123 | 2 | 222 | 1 | 799 | 1 | 987 | 2 | 444 | 3 | 212 | 2 | 222 | 1 | 898

我有以下资料:

OrderID | Articlenumber|
--------+--------------+
1       | 123          |
2       | 222          |
1       | 799          |
1       | 987          |
2       | 444          |
3       | 212          |
2       | 222          |
1       | 898          |
我希望每个orderID的所有商品编号汇总如下:

orderID|articelnumber       |
-------+--------------------+
1      |123, 799, 987, 898  |
2      |222, 444, 222       |
3      |212                 |
或:

如何使用SQL Server完成此操作?每个orderID的项目数是可变的


非常感谢

像这样的东西是你想要的吗

;WITH cte AS
(
    SELECT OrderID, Articlenumber
    FROM [YOUR_TABLE]
)
SELECT 
    OrderID,
    STUFF((SELECT ',' + Articlenumber FROM [YOUR_TABLE] WHERE [YOUR_TABLE].OrderID = cte.OrderID FOR XML PATH('')), 1, 1, '') articelnumber
FROM cte
GROUP BY OrderID
ORDER BY 1

这个问题已经被回答了一百万次。我还没有找到它-你能给我发一个链接吗?从谷歌上的“SQL行到列”开始,这里有两个不同的东西。第一个是创建一个带分隔符的列表,第二个是一个pivot。这里有一个例子
;WITH cte AS
(
    SELECT OrderID, Articlenumber
    FROM [YOUR_TABLE]
)
SELECT 
    OrderID,
    STUFF((SELECT ',' + Articlenumber FROM [YOUR_TABLE] WHERE [YOUR_TABLE].OrderID = cte.OrderID FOR XML PATH('')), 1, 1, '') articelnumber
FROM cte
GROUP BY OrderID
ORDER BY 1