Prøv nedenstående.
Det, jeg har gjort, er at lave en virtuel tabel, der indeholder unikke måneder. Hvortil der er info i en af de 3 tabeller for den måned. Så er beløbene bundet til den måned.
Jeg har også fjernet ORDER BY
i SUM
klausuler, da de ikke ændrer resultatet. Din IFNULL
kan også ændres, afhængigt af hvordan du forventer, at det fungerer.
Denne metode sparer dig for at skrive 3 partier SUM for hver 3 felter (9 SUM). Hvis der er stavefejl, bedes du rette i overensstemmelse hermed.
BEMÆRK at month
er et nøgleord i nogle SQL. Så ideelt set bør et bedre kolonnenavn bruges.
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