我有以下表格:
TABLE ITEMS
包含
ITEM_ID ITEM
-------------------
1 Food
2 Medical
3 Shopping
4 Others
TABLE EXPENSE_DURATION
包含
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
TABLE AMOUNT_FOR_EXPENSE
包含
AFE_ID E_ID ITEM_LIST AMOUNT
------------------------------------
1 1 1,2,3,4 5000
2 2 1,2,3,4 6000
TABLE EXPENSE
包含
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_summary
。我将Just 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
和
SELECT AMOUNT FROM AMOUNT_FOR_EXPENSE WHERE E_ID=1
结果> 5000
我知道这两个单独的查询,但我不知道如何合并它们以及如何在选择查询中执行减法 加入即可。
请帮助制作选择查询/存储过程,以便我可以根据需要生成结果。
答案 0 :(得分:4)
您可以使用以下查询来获得结果:
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
答案 1 :(得分:-2)
试试这个
SELECT SUM(AMOUNT),AMOUNT FROM EXPENSE ,AMOUNT_FOR_EXPENSE WHERE E_ID=1