Prova quanto segue.
Quello che ho fatto è creare una tabella virtuale, contenente mesi unici. A cui ci sono informazioni in una delle 3 tabelle per quel mese. Quindi le somme sono vincolate a quel mese.
Ho anche rimosso ORDER BY
nella SUM
clausole, in quanto non cambiano il risultato. Il tuo IFNULL
potrebbe anche essere modificato, a seconda di come prevedi che funzioni.
Questo metodo ti evita di scrivere 3 lotti di SUM per ogni 3 campi (9 SUM). In caso di errori di battitura, correggili di conseguenza.
NOTA che month
è una parola chiave, in alcuni SQL. Quindi, idealmente, dovrebbe essere utilizzato un nome di colonna migliore.
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