SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Os dados são preenchidos a partir da data de uma tabela específica em vez de toda a tabela no sqlite


Tente o abaixo.

O que eu fiz foi criar uma tabela virtual, contendo meses únicos. Para o qual existe informação numa das 3 tabelas desse mês. Em seguida, as somas são vinculadas a esse mês.

Eu também removi o ORDER BY na SUM cláusulas, pois elas não alteram o resultado. Seu IFNULL também pode ser alterado, dependendo de como você espera que funcione.

Este método evita que você escreva 3 lotes de SUMs para cada 3 campos (9 SUMs). Se houver algum erro de digitação, corrija de acordo.

OBSERVE que month é uma palavra-chave, em algum SQL. Então, idealmente, um nome de coluna melhor deve ser usado.
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