Requête sql convertissant des lignes en colonnes

J'ai 2 tables

Order Table – OrderId- Clé primaire
Tableau des détails de la command – key étrangère OrderID de la table de command.

La table Orderdetail contient les informations pour tous les produits qui ont été commandés dans l'ordre spécifique

For example Order Order Detail Table ID CustomerID OrderDate ID OrderID ProductID UnitPrice Quantity 1 1 2009-10-1 1 1 5 5 10 2 2 2009-10-2 2 1 4 10 100 3 3 2009-10-3 3 1 7 8 50 4 1 2 5 20 5 2 1 8 100 6 2 5 5 1 7 2 4 10 100 8 3 1 5 200 9 3 3 20 100 10 3 2 5 200 I need to get result like this OrderId ProductID Total Items 1 5,4,7,2 180 (sum of quantity) 2 1,5,4 300 3 1,3,2 500 

Comment obtenons-nous ce résultat dans une requête?

Pour SQL Server 2005+, utilisez:

 SELECT x.orderid, STUFF(ISNULL((SELECT ', ' + y.productid FROM ORDER_DETAILS y WHERE y.orderid = x.orderid GROUP BY y.productid FOR XML PATH ('')), ''), 1, 2, ''), x.total_items FROM (SELECT od.orderid, SUM(od.quantity) AS total_items FROM ORDER_DETAILS od GROUP BY od.orderid) x 
 Select odt.OrderID , (Select Cast(ProductID as Varchar(20) + ', ' from [Order Detail Table] as odt1 where odt.OrderID = odt1.OrderID FOR XML PATH('') ) as ProductID , Sum(odt.UnitPrice * odt.Quantity) as [Total Items] From [Order Detail Table] as odt Group By OrderID