SQLite
 sql >> Database >  >> RDS >> SQLite

I dati vengono popolati dalla data di una determinata tabella anziché da tutte le tabelle in sqlite

Prova quanto segue.

Quello che ho fatto è creare una tabella virtuale, contenente mesi unici. A cui ci sono informazioni in una delle 3 tabelle per quel mese. Quindi le somme sono vincolate a quel mese.

Ho anche rimosso ORDER BY nella SUM clausole, in quanto non cambiano il risultato. Il tuo IFNULL potrebbe anche essere modificato, a seconda di come prevedi che funzioni.

Questo metodo ti evita di scrivere 3 lotti di SUM per ogni 3 campi (9 SUM). In caso di errori di battitura, correggili di conseguenza.

NOTA che month è una parola chiave, in alcuni SQL. Quindi, idealmente, dovrebbe essere utilizzato un nome di colonna migliore.

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