2013-03-03 184 views
0

我有如下表:点心和减法运算加入

ITEMS包含

ITEM_ID ITEM 
------------------- 
1  Food 
2  Medical 
3  Shopping 
4  Others 

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 

AMOUNT_FOR_EXPENSE包含

AFE_ID E_ID ITEM_LIST AMOUNT 
------------------------------------ 
1  1  1,2,3,4  5000 
2  2  1,2,3,4  6000 

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。我正在将E_ID作为参数传递给此存储过程。

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

示例:E_ID = 1

结果:

TOTAL_OUT TOTAL_IN SUMMARY (IN-OUT) 
12600  5000  -7600 

我知道只有

​​

结果> 12600

而且

SELECT AMOUNT FROM AMOUNT_FOR_EXPENSE WHERE E_ID=1 

结果> 5000

我知道这两个单独的查询,但我不知道该怎么合并他们如何在选择查询加入执行减法

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

+1

什么是你的RDBMS? – Sebas 2013-03-03 12:03:29

回答

-2

试试这个

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

这段代码不会编译(如果不使用group by,则不能进行聚合),如果这样做,它会试图交叉连接,即使它在语法上是正确的也不能解决问题。 – 2013-03-03 16:52:31

+0

@echo_me由于各种原因,此查询不正确,由Aaron在上面概述。请纠正或删除它。并且不要指责他人下调。 upvoting和downvoting是秘密 - 正是这样我们没有这些非生产性的指责。如果我告诉你我已经提出了你的答案,你会相信我吗? – 2013-03-04 14:17:33

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 

SQL Fiddle with Demo

+0

与此查询我只是告诉他如何合并他们,因为他问如何合并他们 – 2013-03-03 14:59:33

+1

@echo_me OP请求帮助创建一个选择查询给出结果,我的答案是这样做的。 – Taryn 2013-03-03 15:08:58