2013-03-03 183 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