Mysql 添加列(如果可用)

Mysql 添加列(如果可用),mysql,sql,Mysql,Sql,这里有两张桌子 第一个表由10行acnumber列和10行期初余额列组成。 第二个表由一列中的3个acnumber组成,这些acnumber已经进行了多次事务处理 在“交易类型”列中提到“存款”或“取款”以及“交易金额”列 因此,我必须选择所有acnumber及其存款,即期初余额+存款。如果表2中没有可用的交易,则添加期初余额和0。我试过这样的东西 select a1.acnumber,a1.opening_balance+if (a1.acnumber not in (a2.acnumber)

这里有两张桌子 第一个表由10行acnumber列和10行期初余额列组成。 第二个表由一列中的3个acnumber组成,这些acnumber已经进行了多次事务处理 在“交易类型”列中提到“存款”或“取款”以及“交易金额”列

因此,我必须选择所有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。有什么建议吗?

您需要对查询进行一些更改。例如,
其中
正在撤消
左侧外部联接。您应该将该条件移动到
on
子句中。另外,
groupby
列应该是
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;