0

I have the following:

OrderID | Articlenumber|
--------+--------------+
1       | 123          |
2       | 222          |
1       | 799          |
1       | 987          |
2       | 444          |
3       | 212          |
2       | 222          |
1       | 898          |

and I want the following (sum up all article numbers per orderID):

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

or:

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

How can I do it with SQL-Server? The number of articles per orderID is variable.

Thanks a lot!

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
AbsoluteBeginner
  • 485
  • 4
  • 13

1 Answers1

1

Is something like this what you want?

;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
Fábio Nascimento
  • 2,644
  • 1
  • 21
  • 27