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所述。请更正或删除它。不要指责别人投了反对票。向上投票和向下投票都是秘密的——正因为如此,我们才没有这些无益的指控。如果我告诉你我对你的答案投了赞成票,你会相信我吗?