Zkuste níže.
To, co jsem udělal, je vytvoření virtuální tabulky obsahující jedinečné měsíce. K čemuž je info v jedné ze 3 tabulek pro daný měsíc. Poté jsou částky vázány na daný měsíc.
Také jsem odstranil ORDER BY
v SUM
klauzule, protože nemění výsledek. Váš IFNULL
lze také změnit v závislosti na tom, jak očekáváte, že bude fungovat.
Tato metoda vám ušetří vypisování 3 šarží SUM pro každé 3 pole (9 SUM). Pokud tam jsou nějaké překlepy, opravte je prosím.
POZNÁMKA, že month
je klíčové slovo, v některých SQL. V ideálním případě by tedy měl být použit lepší název sloupce.
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