Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server查询以按订单查找所有产品的总价_Sql_Sql Server - Fatal编程技术网

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,我想这就是我的答案的作用?显然是几年前我写的。是的,这就是你的答案。我只是确认你的审问是正确的猜测。