我有两个单独的 sql 查询,用于计算总购买数量和总销售数量。
SELECT b.book_id, b.title, SUM(pid.quantity) AS 'Purchase Quantity'
FROM purchase_invoice_det pid JOIN book b ON pid.book_id = b.book_id
JOIN purchase_invoice pi ON pid.purchase_inv_id = pi.purchase_inv_id
WHERE pi.purchase_inv_date BETWEEN '2020-01-01' AND '2020-12-31' AND branch_id = 2 GROUP BY title;
SELECT b.book_id, b.title, SUM(sid.quantity) AS 'Sold Quantity'
FROM sales_invoice_det sid JOIN book b ON sid.book_id = b.book_id
JOIN sales_invoice si ON sid.sales_inv_id = si.sales_inv_id
WHERE si.sales_inv_date BETWEEN '2020-01-01' AND '2020-12-31' AND branch_id = 2 GROUP BY title;
现在要计算每种产品的可用库存,我需要通过结合两个查询从采购数量中减去总销售数量。
我尝试按以下方式加入,但它计算的可用库存为原始可用数量的两倍。
SELECT b.book_id, b.title, SUM(pid.quantity)-SUM(sid.quantity) AS 'Available Stock',
FROM purchase_invoice_det pid JOIN book b ON pid.book_id = b.book_id
JOIN purchase_invoice pi ON pid.purchase_inv_id = pi.purchase_inv_id
JOIN sales_invoice_det sid ON sid.book_id = b.book_id
JOIN sales_invoice si ON sid.sales_inv_id = si.sales_inv_id
WHERE pi.purchase_inv_date BETWEEN '2020-02-01' AND '2020-12-31'
AND si.sales_inv_date BETWEEN '2020-01-01' AND '2020-12-31'
AND pi.branch_id = 2 AND si.branch_id = 2 GROUP BY b.title;
任何想法如何结合以上两个 sql 查询来计算每个产品的可用库存?
答案 0 :(得分:1)
试试这个方法。
SELECT A.BOOK_ID,B.TITLE,A.Purchase_Quantity-B.Sold_Quantity from (SELECT b.book_id, b.title, SUM(pid.quantity) AS Purchase_Quantity
FROM purchase_invoice_det pid JOIN book b ON pid.book_id = b.book_id
JOIN purchase_invoice pi ON pid.purchase_inv_id = pi.purchase_inv_id
WHERE pi.purchase_inv_date BETWEEN '2020-01-01' AND '2020-12-31' AND branch_id = 2 GROUP BY title) A ,
(SELECT b.book_id, b.title, SUM(sid.quantity) AS Sold_Quantity
FROM sales_invoice_det sid JOIN book b ON sid.book_id = b.book_id
JOIN sales_invoice si ON sid.sales_inv_id = si.sales_inv_id
WHERE si.sales_inv_date BETWEEN '2020-01-01' AND '2020-12-31' AND branch_id = 2 GROUP BY title)B
WHERE A.BOOK_ID=B.BOOK_ID AND A.TITLE =B.TITLE ;