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