Calculating the SUM of (Quantity*Price) from 2 different tables

前端 未结 5 1776
孤独总比滥情好
孤独总比滥情好 2021-02-04 15:45

I have two tables as follows

PRODUCT table

Id | Name | Price

And an ORDERITEM table

Id | Orde         


        
相关标签:
5条回答
  • 2021-02-04 16:03

    Use:

      SELECT oi.orderid,
             SUM(oi.quantity * p.price) AS grand_total,
        FROM ORDERITEM oi
        JOIN PRODUCT p ON p.id = oi.productid
       WHERE oi.orderid = @OrderId
    GROUP BY oi.orderid
    

    Mind that if either oi.quantity or p.price is null, the SUM will return NULL.

    0 讨论(0)
  • 2021-02-04 16:18
    select orderID, sum(subtotal) as order_total from
    (
        select orderID, productID, price, qty, price * qty as subtotal
        from product p inner join orderitem o on p.id = o.productID
        where o.orderID = @orderID
    ) t
    group by orderID
    
    0 讨论(0)
  • 2021-02-04 16:22

    I think this is along the lines of what you're looking for. It appears that you want to see the orderid, the subtotal for each item in the order and the total amount for the order.

    select o1.orderID, o1.subtotal, sum(o2.UnitPrice * o2.Quantity) as order_total from
    (
        select o.orderID, o.price * o.qty as subtotal
        from product p inner join orderitem o on p.ProductID= o.productID
        where o.orderID = @OrderId
    )as o1
    inner join orderitem o2 on o1.OrderID = o2.OrderID
    group by o1.orderID, o1.subtotal
    
    0 讨论(0)
  • 2021-02-04 16:26

    i think this - including null value = 0

     SELECT oi.id, 
             SUM(nvl(oi.quantity,0) * nvl(p.price,0)) AS total_qty 
        FROM ORDERITEM oi 
        JOIN PRODUCT p ON p.id = oi.productid 
       WHERE oi.orderid = @OrderId 
    GROUP BY oi.id 
    
    0 讨论(0)
  • 2021-02-04 16:29

    I had the same problem as Marko and come across a solution like this:

    /*Create a Table*/
    CREATE TABLE tableGrandTotal
    (
    columnGrandtotal int
    )
    
    /*Create a Stored Procedure*/
    CREATE PROCEDURE GetGrandTotal
    AS
    
    /*Delete the 'tableGrandTotal' table for another usage of the stored procedure*/
    DROP TABLE tableGrandTotal
    
    /*Create a new Table which will include just one column*/
    CREATE TABLE tableGrandTotal
    (
    columnGrandtotal int
    )
    
    /*Insert the query which returns subtotal for each orderitem row into tableGrandTotal*/
    INSERT INTO tableGrandTotal
        SELECT oi.Quantity * p.Price AS columnGrandTotal
            FROM OrderItem oi
            JOIN Product p ON oi.Id = p.Id
    
    /*And return the sum of columnGrandTotal from the newly created table*/    
    SELECT SUM(columnGrandTotal) as [Grand Total]
        FROM tableGrandTotal
    

    And just simply use the GetGrandTotal Stored Procedure to retrieve the Grand Total :)

    EXEC GetGrandTotal
    
    0 讨论(0)
提交回复
热议问题