2012-10-06 59 views
1

這是一個通用的SQL問題,但我使用了Firebird。SUM和SUM在同一個表中的SQL請求

我有這個表(簡體):

 
id amount type idtype 
-------------------- 
1 10  in1 0 
2 15  in2 0 
3 5  out1 1 
4 4  out2 1 
5 5  out3 2 

idtype欄「顯示」來襲部分的ID,並補充:我不能用我問的形式「類型」一欄,「事業型每次都是不一樣的。 idtype傳入具有「0」,這意味着「進入部分」

所以,我想有結果:

 
id in  out 
-------------------- 
1 10  9  
2 15  5 

我已經試過這樣:

 
select 
    id, 
    amount, 
    (
    select 
     SUM (amount) as together 
    from 
     mytable 
    where 
     idtype 0 
    group by 
     id 
    ) as "out" 
from 
    mytable 
where 
    idtype = 0 

但這不起作用。 有什麼建議嗎?

回答

1

在條件中,您正在使用id字段而不是idtype,並且您不符合您想歸納爲任何內容的記錄。

select 
    id, 
    amount, 
    (
    select 
     SUM (amount) as together 
    from 
     mytable 
    where 
     idtype = t.id 
    ) as "out" 
from 
    mytable t 
where 
    idtype = 0 

你也可以把它寫成一個連接:

select 
    id, 
    amount, 
    sum(t2.amount) as "out" 
from 
    mytable t 
    innerjoin mytable t2 on t2.idtype = t.id 
group by 
    t.id, t.amount 
where 
    idtype = 0 
+0

謝謝,賴特和快速的答案! – user1724995