SQLite
 sql >> Base de données >  >> RDS >> SQLite

Les données sont remplies à partir de la date d'une table particulière au lieu de toutes les tables dans sqlite

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