Sql 具有多个联接的select查询中的求和和和减法操作

Sql 具有多个联接的select查询中的求和和和减法操作,sql,stored-procedures,Sql,Stored Procedures,我有以下表格: 表项目包含 ITEM_ID ITEM ------------------- 1 Food 2 Medical 3 Shopping 4 Others E_ID NAME FROM_DATE TO_DATE ---------------------------------------------------------------- 1 FEB_2012 1-Feb-2013 1

我有以下表格:

项目
包含

ITEM_ID ITEM
-------------------
1       Food
2       Medical
3       Shopping
4       Others
E_ID    NAME    FROM_DATE               TO_DATE
----------------------------------------------------------------
1   FEB_2012    1-Feb-2013 12:00:00 AM  28-Feb-2013 12:00:00 AM
2   MAR_2012    1-Mar-2013 12:00:00 AM  31-Mar-2013 12:00:00 AM
AFE_ID  E_ID    ITEM_LIST   AMOUNT
------------------------------------
1       1       1,2,3,4     5000
2       2       1,2,3,4     6000
EXPENSE_ID  E_ID    ITEM_ID     DATE                    AMOUNT
---------------------------------------------------------------------
1          1        1           1-Feb-2013 12:00:00 AM  250
2          1        2           1-Feb-2013 12:00:00 AM  450
3          1        3           1-Feb-2013 12:00:00 AM  300
4          1        4           1-Feb-2013 12:00:00 AM  100
5          1        1           2-Feb-2013 12:00:00 AM  4500
6          1        2           2-Feb-2013 12:00:00 AM  3500
7          1        3           2-Feb-2013 12:00:00 AM  2000
8          1        4           2-Feb-2013 12:00:00 AM  1500
EXPENSE\u DURATION
包含

ITEM_ID ITEM
-------------------
1       Food
2       Medical
3       Shopping
4       Others
E_ID    NAME    FROM_DATE               TO_DATE
----------------------------------------------------------------
1   FEB_2012    1-Feb-2013 12:00:00 AM  28-Feb-2013 12:00:00 AM
2   MAR_2012    1-Mar-2013 12:00:00 AM  31-Mar-2013 12:00:00 AM
AFE_ID  E_ID    ITEM_LIST   AMOUNT
------------------------------------
1       1       1,2,3,4     5000
2       2       1,2,3,4     6000
EXPENSE_ID  E_ID    ITEM_ID     DATE                    AMOUNT
---------------------------------------------------------------------
1          1        1           1-Feb-2013 12:00:00 AM  250
2          1        2           1-Feb-2013 12:00:00 AM  450
3          1        3           1-Feb-2013 12:00:00 AM  300
4          1        4           1-Feb-2013 12:00:00 AM  100
5          1        1           2-Feb-2013 12:00:00 AM  4500
6          1        2           2-Feb-2013 12:00:00 AM  3500
7          1        3           2-Feb-2013 12:00:00 AM  2000
8          1        4           2-Feb-2013 12:00:00 AM  1500
费用的金额
包含

ITEM_ID ITEM
-------------------
1       Food
2       Medical
3       Shopping
4       Others
E_ID    NAME    FROM_DATE               TO_DATE
----------------------------------------------------------------
1   FEB_2012    1-Feb-2013 12:00:00 AM  28-Feb-2013 12:00:00 AM
2   MAR_2012    1-Mar-2013 12:00:00 AM  31-Mar-2013 12:00:00 AM
AFE_ID  E_ID    ITEM_LIST   AMOUNT
------------------------------------
1       1       1,2,3,4     5000
2       2       1,2,3,4     6000
EXPENSE_ID  E_ID    ITEM_ID     DATE                    AMOUNT
---------------------------------------------------------------------
1          1        1           1-Feb-2013 12:00:00 AM  250
2          1        2           1-Feb-2013 12:00:00 AM  450
3          1        3           1-Feb-2013 12:00:00 AM  300
4          1        4           1-Feb-2013 12:00:00 AM  100
5          1        1           2-Feb-2013 12:00:00 AM  4500
6          1        2           2-Feb-2013 12:00:00 AM  3500
7          1        3           2-Feb-2013 12:00:00 AM  2000
8          1        4           2-Feb-2013 12:00:00 AM  1500
费用
包含

ITEM_ID ITEM
-------------------
1       Food
2       Medical
3       Shopping
4       Others
E_ID    NAME    FROM_DATE               TO_DATE
----------------------------------------------------------------
1   FEB_2012    1-Feb-2013 12:00:00 AM  28-Feb-2013 12:00:00 AM
2   MAR_2012    1-Mar-2013 12:00:00 AM  31-Mar-2013 12:00:00 AM
AFE_ID  E_ID    ITEM_LIST   AMOUNT
------------------------------------
1       1       1,2,3,4     5000
2       2       1,2,3,4     6000
EXPENSE_ID  E_ID    ITEM_ID     DATE                    AMOUNT
---------------------------------------------------------------------
1          1        1           1-Feb-2013 12:00:00 AM  250
2          1        2           1-Feb-2013 12:00:00 AM  450
3          1        3           1-Feb-2013 12:00:00 AM  300
4          1        4           1-Feb-2013 12:00:00 AM  100
5          1        1           2-Feb-2013 12:00:00 AM  4500
6          1        2           2-Feb-2013 12:00:00 AM  3500
7          1        3           2-Feb-2013 12:00:00 AM  2000
8          1        4           2-Feb-2013 12:00:00 AM  1500
现在,我想制作一个存储过程,该过程提供了
费用摘要
。我只是将
E_ID
作为参数传递到此存储过程

因此,我需要一个表包含各自的摘要

示例:E_ID=1

结果:

TOTAL_OUT   TOTAL_IN    SUMMARY (IN-OUT)
12600       5000        -7600
我只知道

SELECT SUM(AMOUNT) FROM EXPENSE WHERE E_ID=1
结果>12600

结果>5000

我知道这两个独立的查询,但我不知道如何合并它们,以及如何在选择查询中执行减法

请帮助创建select查询/存储过程,以便我可以根据需要生成结果。

尝试此操作

   SELECT SUM(AMOUNT),AMOUNT FROM EXPENSE ,AMOUNT_FOR_EXPENSE  WHERE E_ID=1

您可以使用以下查询获得结果:

select e.e_id, 
  e.Total_out, 
  a.amount Total_in,
  (e.Total_out - a.amount) * -1 Summary
from
(
  select sum(amount) Total_out,
    e_id
  from expense
  group by e_id
) e
left join AMOUNT_FOR_EXPENSE a
  on e.e_id = a.e_id
where e.e_id = 1

参见

通过这个查询,我只是向他展示了如何合并它们,因为他问了如何合并them@echo_meOP请求有助于创建一个select查询并给出结果,我的答案就是这样。这段代码不会编译(如果不使用group by,就不能像那样进行聚合),如果它编译了,它会尝试交叉连接,即使语法正确,也无法解决问题。@echo\u me由于各种原因,此查询不正确,如上面Aaron所述。请更正或删除它。不要指责别人投了反对票。向上投票和向下投票都是秘密的——正因为如此,我们才没有这些无益的指控。如果我告诉你我对你的答案投了赞成票,你会相信我吗?