SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Daten werden aus dem Datum einer bestimmten Tabelle statt aus allen Tabellen in SQLite aufgefüllt

Versuchen Sie Folgendes.

Ich habe eine virtuelle Tabelle erstellt, die eindeutige Monate enthält. Dazu gibt es Infos in einer der 3 Tabellen für diesen Monat. Dann sind die Beträge an diesen Monat gebunden.

Ich habe auch den ORDER BY entfernt in der SUM Klauseln, da sie das Ergebnis nicht ändern. Ihr IFNULL könnte auch geändert werden, je nachdem, wie Sie es erwarten.

Diese Methode erspart Ihnen das Ausschreiben von 3 SUMs für jeweils 3 Felder (9 SUMs). Sollten Tippfehler vorhanden sein, korrigieren Sie diese bitte entsprechend.

BEACHTEN Sie diesen month ist ein Schlüsselwort, in einigen SQL. Idealerweise sollte also ein besserer Spaltenname verwendet werden.

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