sql >> Database teknologi >  >> RDS >> Oracle

Vis data fra tabel selvom der ikke er data!! Oracle

For det første lyder det, som om din ansøgning ville have gavn af en kalendertabel. En kalendertabel er en liste over datoer og oplysninger om datoerne.

For det andet kan du gøre dette uden at bruge midlertidige tabeller. Her er fremgangsmåden:

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

Her er ideen. Aliaskonstanterne registrerer den tidligste dato i din tabel. Aliasdatoer opretter derefter en sekvens af datoer. Den indre underforespørgsel beregner en sekvens af heltal ved hjælp af rækkenumre og tilføjer derefter disse til den første dato. Bemærk dette forudsætter, at du i gennemsnit har mindst én transaktion pr. dato. Hvis ikke, kan du bruge et større bord.

Den sidste del er joinforbindelsen, der bruges til at bringe information tilbage om datoerne. Bemærk brugen af ​​count(t.date) i stedet for count(*). Dette tæller antallet af poster i din tabel, som skal være 0 for datoer uden data.



  1. Vil gruppering af et bestilt bord altid returnere den første række? MYSQL

  2. SQL Server konverter kolonne til en identitetskolonne

  3. lagrede procedurer med sqlAlchemy

  4. Vælg en post, bare hvis den før den har en lavere værdi