添加列(如果可用)

时间:2014-02-16 17:39:00

标签: mysql sql

这里有2张桌子 第一个表由10行acnumber列和10行opening_balance列组成。 第二个表由一列中的3个已经多次进行交易的字符组成 在transaction_type列中提到“存款”或“提款”和transaction_amount列。

所以我必须选择所有的号码和他们的存款,即期初余额+存款。如果表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 个答案:

答案 0 :(得分: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;