代码之家  ›  专栏  ›  技术社区  ›  chchrist

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

  •  2
  • chchrist  · 技术社区  · 14 年前

    (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)

    我要找的是订单号为020100812的所有产品的总价。我是否应该选择订单代码,然后在加入产品表时对数量求和?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Michael Pakhantsov    14 年前

    为什么你需要不同的?

    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
    
        2
  •  1
  •   Rup    14 年前

    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
    

    i、 e.不要在订单ID中分组。