SQL Server查询按订单查找所有产品的总价

时间:2010-08-12 08:59:34

标签: sql sql-server

我有(id,orderCode,productId,quantity,color,size)的订单 在哪里我可以有这样的条目:

1,O20100812,163,2,BLUE,Medium
1,O20100812,163,3,BLUE,Larger
1,O20100812,145,4,RED,Large etc
1,O20100815,134,5,RED,Large etc
1,O20100815,143,2,BLACK,Large etc
1,O20100815,112,8,BLACK,Large etc

另一个包含(id,name,price)

的产品

我想要的是使用orderCode 020100812查找订单中所有产品的总价。我应该DISTINCT选择订单代码,然后在加入产品表时补充数量吗?

2 个答案:

答案 0 :(得分:4)

为什么你需要分明?

Select SUM(o.Quantity * Price) TotalPrice
FROM Orders o JOIN Products p ON (o.ProductId = p.Id)
WHERE OrderCode = '020100812'

对于所有订单,您可以使用以下查询:

Select OrderCode, SUM(o.Quantity * Price) TotalPrice
FROM Orders o JOIN Products p ON (o.ProductId = p.Id)
Group by OrderCode

答案 1 :(得分:1)

不,GROUP BY然后您可以使用SUM在整个群组中汇总,例如

select  O.id, O.ordercode, sum(P.price * O.quantity) as total
  from  orders O
  join  products P on P.id = O.productid
group by O.id, O.ordercode

将显示每个订单中每个订单代码的总价 - 如果您想要所有订单中的所有订单代码,则需要

select  O.ordercode, sum(P.price * O.quantity) as total
  from  orders O
  join  products P on P.id = O.productid
group by O.ordercode

即。不要在订单ID中分组。

(我猜O20100812只是一个例子而你实际上想要所有订单代码?)

相关问题