首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库存库存计算查询- Mysql

库存库存计算查询- Mysql
EN

Stack Overflow用户
提问于 2021-04-08 21:54:37
回答 1查看 48关注 0票数 1

我有两个单独的sql查询来计算总购买量和总销售量。

代码语言:javascript
复制
    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;

现在,为了计算每种产品的可用库存,我需要通过组合两个查询从购买数量中减去总售出数量。

我尝试按如下方式加入,但它将可用库存计算为原始可用数量的2倍。

代码语言:javascript
复制
    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查询来计算每种产品的可用库存吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 22:10:57

尝试这种方法。

代码语言:javascript
复制
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 ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67005487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档