SQL Server查询以按订单查找所有产品的总价
我有一张带有SQL Server查询以按订单查找所有产品的总价,sql,sql-server,Sql,Sql Server,我有一张带有(id、orderCode、productId、数量、颜色、大小)的订单表 我可以在其中输入以下内容: 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、orderCode、productId、数量、颜色、大小)的订单表
我可以在其中输入以下内容:
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、名称、价格)
我想要的是找到订单代码为020100812的订单中所有产品的总价。我是否应该在加入产品表时选择订单代码,然后对数量求和?为什么需要DISTINCT
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
否,按
分组,然后您可以使用求和
在整个组中进行聚合,例如
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
i、 e.不要在订单ID中分组
(我猜O20100812只是一个例子,你真的希望所有订单代码都使用这个?我想我需要不同的原因我可以有多个O20100812、多个O20100813和多个O20100816等,你不需要指定不同的@Michael的回答是正确的,但我需要在html表格中显示订单代码和订单总价。在这里,我将只显示020100812。我应该对每个订单进行查询吗?不,在这种情况下,您应该按订单代码分组。在另一个答案的评论中确认,是的,每个订单都需要查询,而不仅仅是O20100812。@Cœur,我想这就是我的答案的作用?显然是几年前我写的。是的,这就是你的答案。我只是确认你的审问是正确的猜测。