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

Afficher les données du tableau même s'il n'y a pas de données !! Oracle

Tout d'abord, il semble que votre application bénéficierait d'un tableau de calendrier. Une table de calendrier est une liste de dates et d'informations sur les dates.

Deuxièmement, vous pouvez le faire sans utiliser de tables temporaires. Voici l'approche :

with constants as (select min(thedate>) as firstdate from <table>)
     dates as (select( <firstdate> + rownum - 1) as thedate
               from (select rownum
                     from <table> cross join constants
                     where rownum < sysdate - <firstdate> + 1
                    ) seq
              )
select dates.thedate, count(t.date)
from dates left outer join
     <table> t
     on t.date = dates.thedate
group by dates.thedate

Voici l'idée. Les constantes d'alias enregistrent la date la plus ancienne dans votre table. Les dates alias créent alors une séquence de dates. La sous-requête interne calcule une séquence d'entiers, en utilisant rownum, puis les ajoute à la première date. Notez que cela suppose que vous avez en moyenne au moins une transaction par date. Sinon, vous pouvez utiliser une table plus grande.

La dernière partie est la jointure qui est utilisée pour ramener des informations sur les dates. Notez l'utilisation de count(t.date) au lieu de count(*). Cela compte le nombre d'enregistrements dans votre table, qui devrait être 0 pour les dates sans données.