我有2张桌子
订单表 - OrderId-主键
订单明细表 - 订单表中的OrderID外键。
Orderdetail表包含按特定顺序订购的所有产品的信息
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
我们如何在一个查询中获得此结果?
答案 0 :(得分:2)
对于SQL Server 2005+,请使用:
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
答案 1 :(得分:0)
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