我有两个sql表,purchase
和sent
,我想知道任何日期的项目的未结余额。为此,我试图采用sum(puchase.quantity) - sum(sent.quantity) where date<some date
。我可以有个别查询,但我不知道如何将它们组合起来。
以下是个别查询:
select item,sum(quantity) from sent where datee <'some date' group by item
select item,sum(quantity) from purchase where datee<'some date' group by item
请告诉我是否有更好的方法来获得未结余额。
提前致谢。
答案 0 :(得分:1)
我想你想要这个
以下是工作演示 SQLFiddle
CREATE TABLE sent
(
item int,
quantity int
);
CREATE TABLE purchase
(
item int,
quantity int
);
insert into sent values(1,4);
insert into sent values(2,7);
insert into sent values(3,9);
insert into sent values(4,5);
insert into sent values(5,9);
insert into purchase values(1,2);
insert into purchase values(2,5);
insert into purchase values(3,3);
insert into purchase values(4,2);
insert into purchase values(5,7);
select sent.item , (sum(IFNULL(sent.quantity,0)) - sum(IFNULL(purchase.quantity,0))) as diff
FROM sent , purchase Where sent.item = purchase.item group by sent.item
答案 1 :(得分:1)
也许有更简洁的方式来获得你想要的东西,但以下内容可以给你正确的结果:
SELECT s.item,
s.qty as total_sent,
COALESCE(p.qty,0) as total_purchase,
s.qty - COALESCE(p.qty,0) as stock
FROM
(
SELECT item, sum(quantity) as qty
FROM sent
GROUP BY item
) s
LEFT JOIN
(
SELECT item, sum(quantity) as qty
FROM purchase
GROUP BY item
) p
ON p.item = s.item