Probeer het onderstaande.
Wat ik heb gedaan, is een virtuele tabel maken met daarin unieke maanden. Waarop informatie staat in een van de 3 tabellen voor die maand. Dan zijn de bedragen gebonden aan die maand.
Ik heb ook de ORDER BY
. verwijderd in de SUM
clausules, omdat ze het resultaat niet veranderen. Uw IFNULL
kan ook worden gewijzigd, afhankelijk van hoe u verwacht dat het werkt.
Deze methode bespaart u het schrijven van 3 partijen SOM's voor elke 3 velden (9 SUM's). Als er typefouten zijn, corrigeer die dan dienovereenkomstig.
LET OP dat month
is een sleutelwoord, in sommige SQL. Dus idealiter zou een betere kolomnaam moeten worden gebruikt.
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