SQL:sum(单位)表a减去sum(单位)表b

时间:2012-02-20 08:12:01

标签: sql sybase-ase

我有两张桌子;

  1. item_in(ITEM_ID,单元)
  2. item_out(ITEM_ID,单元)
  3. 现在让我说我想知道每个项目插入了多少单位,我只是查询

    select sum(unit) from item_in order by item_id
    

    同样,如果我想知道有多少单位被取出,我只是查询

    select sum(unit) from item_out order by item_id
    

    我不知道如何查询每个项目的余额(item_in - item_out)。

    如果我可以在一个存储过程中进行所有查询,那就太好了,因为我想使用DataWindow调用该过程。

    请帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

SELECT
  item_id,
  SUM(unit) AS unit_balance
FROM (
  SELECT item_id, unit FROM item_in
  UNION ALL
  SELECT item_id, -unit FROM item_out
) AS s (item_id, unit)
GROUP BY item_id

答案 1 :(得分:1)

我对sybase一无所知,但是这个,或者这个的微妙变化应该有效。

select t1.item_id, sum(t1.unit - coalesce(t2.unit, 0)) as Balance
from item_in t1
left join item_out t2
on t1.item_id = t2.item_id
group by t1.item_id

当t2中的单位为NULL时,Coalesce将输出0,以便您可以正确地从中减去item_in单位数量。

注意:这适用于SQL Server。我不知道在sybase中运行它时是否会发现任何语法差异:(

答案 2 :(得分:0)

我希望以下查询有效:

select 
sum(inn.unit) - sum(outt.unit)
from item_in inn
inner join item_out outt on inn.item_id = outt.item_id