Wypróbuj poniższe.
Udało mi się stworzyć wirtualny stół, zawierający wyjątkowe miesiące. Do którego są informacje w jednej z 3 tabel dla tego miesiąca. Następnie kwoty są powiązane z tym miesiącem.
Usunąłem również ORDER BY
w SUM
klauzul, ponieważ nie zmieniają wyniku. Twój IFNULL
można również zmienić, w zależności od tego, jak oczekujesz, że będzie działać.
Ta metoda pozwala zaoszczędzić na wypisywaniu 3 partii SUM dla każdych 3 pól (9 SUM). Jeśli są jakieś literówki, napraw je odpowiednio.
PAMIĘTAJ, że month
jest słowem kluczowym w niektórych SQL. Dlatego najlepiej byłoby użyć lepszej nazwy kolumny.
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