Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Query che aggiunge spazi vuoti per colmare le lacune

Una soluzione consiste nel generare le date con una sottoquery, quindi unirla alla sottoquery con la tabella.

Se hai bisogno solo degli ultimi 7 giorni, puoi provare con questo:

select d.testdate, coalesce(t.val1,0), coalesce(t.val2,0)
from
  (select current_date as testdate
   union all select current_date - interval 1 day
   union all select current_date - interval 2 day
   union all select current_date - interval 3 day
   union all select current_date - interval 4 day
   union all select current_date - interval 5 day
   union all select current_date - interval 6 day) d
  left join tblMyData t
  on d.testdate = t.testdate

se invece di current_date, vuoi gli ultimi 7 giorni nella tabella, la tua query può essere così:

select m.m - interval d day, coalesce(t.val1,0), coalesce(t.val2,0)
from
  (select max(testdate) as m from tblMyData) m
  cross join
  (select 0 as d
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6) d
  left join tblMyData t
  on m.m - interval d day = t.testdate

Si prega di vedere un violino qui .