sql >> Base de Datos >  >> RDS >> SQLite

Los datos se completan a partir de la fecha de una tabla en particular en lugar de todas las tablas en sqlite

Prueba lo siguiente.

Lo que he hecho es crear una tabla virtual que contiene meses únicos. A lo que hay información en una de las 3 tablas para ese mes. Entonces las sumas están ligadas a ese mes.

También eliminé el ORDER BY en el SUM cláusulas, ya que no cambian el resultado. Su IFNULL también se puede cambiar, dependiendo de cómo espera que funcione.

Este método le ahorra escribir 3 lotes de SUM para cada 3 campos (9 SUM). Si hay algún error tipográfico, corríjalo en consecuencia.

TENGA EN CUENTA que month es una palabra clave, en algunos SQL. Entonces, idealmente, se debe usar un mejor nombre de columna.

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