Essayez ce qui suit.
Ce que j'ai fait est de créer une table virtuelle, contenant des mois uniques. À laquelle il y a des informations dans l'un des 3 tableaux pour ce mois. Ensuite, les sommes sont liées à ce mois.
J'ai également supprimé le ORDER BY
dans la SUM
clauses, car elles ne changent pas le résultat. Votre IFNULL
pourrait également être modifié, selon la façon dont vous vous attendez à ce qu'il fonctionne.
Cette méthode vous évite d'écrire 3 lots de SUM pour chacun des 3 champs (9 SUM). S'il y a des fautes de frappe, veuillez les corriger en conséquence.
REMARQUE que month
est un mot-clé, dans certains SQL. Donc, idéalement, un meilleur nom de colonne devrait être utilisé.
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