Versuchen Sie Folgendes.
Ich habe eine virtuelle Tabelle erstellt, die eindeutige Monate enthält. Dazu gibt es Infos in einer der 3 Tabellen für diesen Monat. Dann sind die Beträge an diesen Monat gebunden.
Ich habe auch den ORDER BY
entfernt in der SUM
Klauseln, da sie das Ergebnis nicht ändern. Ihr IFNULL
könnte auch geändert werden, je nachdem, wie Sie es erwarten.
Diese Methode erspart Ihnen das Ausschreiben von 3 SUMs für jeweils 3 Felder (9 SUMs). Sollten Tippfehler vorhanden sein, korrigieren Sie diese bitte entsprechend.
BEACHTEN Sie diesen month
ist ein Schlüsselwort, in einigen SQL. Idealerweise sollte also ein besserer Spaltenname verwendet werden.
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