Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL qui ajoute des blancs pour combler les lacunes

Une solution consiste à générer les dates avec une sous-requête, puis à joindre cette sous-requête à votre table.

Si vous n'avez besoin que des 7 derniers jours, vous pouvez essayer ceci :

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

si au lieu de current_date, vous voulez les 7 derniers jours dans le tableau, alors votre requête peut ressembler à ceci :

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

Veuillez consulter un violon ici .