2014-02-16 49 views
1

這裏我有2個表 第一個表由10行acnumber列和10行opening_balance列組成。 第二張表由3個交易類型列中提到的交易次數爲 的列中的3個交易記錄組成的交易列作爲'Deposit'或'Withdrawal'和transaction_amount列。添加列(如果可用)

,所以我必須做出選擇,即期初餘額+ deposits.If沒有交易可以在表中的所有acnumber和他們的存款2然後加期初餘額和0。我想這樣的事情

select a1.acnumber,a1.opening_balance+if (a1.acnumber not in (a2.acnumber),0,sum(a2.transaction_amount)) 
from account a1 left join trandetails a2 
on a1.acnumber=a2.acnumber 
where a2.transaction_type like'Deposit' 
group by a2.acnumber; 

但它返回只有acnumber在這兩個表中提到。任何建議?

回答

1

您需要對查詢進行一些更改。例如,where正在取消left outer join。您應該將該條件移至on條款。另外,group by列應該是select中不在聚合函數中的列。

所以,試試這個

select a1.acnumber, a1.opening_balance + coalesce(sum(a2.transaction_amount), 0) 
from account a1 left join 
    trandetails a2 
    on a1.acnumber = a2.acnumber and 
     a2.transaction_type like 'Deposit' 
group by a1.acnumber, a1.opening_balance; 
+0

工作得非常好,非常感謝你!!!!! – Yuvi