Tente o abaixo.
O que eu fiz foi criar uma tabela virtual, contendo meses únicos. Para o qual existe informação numa das 3 tabelas desse mês. Em seguida, as somas são vinculadas a esse mês.
Eu também removi o
ORDER BY
na SUM
cláusulas, pois elas não alteram o resultado. Seu IFNULL
também pode ser alterado, dependendo de como você espera que funcione. Este método evita que você escreva 3 lotes de SUMs para cada 3 campos (9 SUMs). Se houver algum erro de digitação, corrija de acordo.
OBSERVE que
month
é uma palavra-chave, em algum SQL. Então, idealmente, um nome de coluna melhor deve ser usado. SELECT month,
(SELECT IFNULL (SUM(FTL.tradebalanceamount),0 )
FROM farmertradelabel as FTL
WHERE FTL.mobileno = '9486032141' AND strftime('%m-%Y', FTL.tradedate) = month) AS tradeamount,
(SELECT IFNULL (SUM(advanceamount),0)
FROM advancelabel
WHERE advancelabel.mobileno = '9486032141' AND strftime('%m-%Y', advancelabel.advancedate) = month) AS advanceamount,
(SELECT IFNULL (SUM(loantotalamount),0)
FROM loanlabel
WHERE loanlabel.mobileno = '9486032141' AND strftime('%m-%Y', loanlabel.loandate) = month) AS loanamount
FROM
(SELECT strftime('%m-%Y', tradedate) as 'month' FROM farmertradelabel
UNION
SELECT strftime('%m-%Y', advancedate) as 'month' FROM advancelabel
UNION
SELECT strftime('%m-%Y', loandate) as 'month' FROM loanlabel
) as dateTable