sql >> Databáze >  >> RDS >> Oracle

Zobrazit data z tabulky, i když tam žádná data nejsou!! Věštec

Za prvé, zdá se, že vaší aplikaci by prospěla tabulka kalendáře. Tabulka kalendáře je seznam dat a informace o datech.

Za druhé, můžete to udělat bez použití dočasných tabulek. Zde je přístup:

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

Tady je nápad. Konstanty aliasů zaznamenají nejstarší datum ve vaší tabulce. Alias ​​data pak vytvoří sekvenci dat. Vnitřní poddotaz vypočítá posloupnost celých čísel pomocí rownum a poté je přidá k prvnímu datu. Všimněte si, že to předpokládá, že máte v průměru alespoň jednu transakci za datum. Pokud ne, můžete použít větší stůl.

Poslední částí je spojení, které se používá k návratu informací o datech. Všimněte si použití count(t.date) místo count(*). Toto spočítá počet záznamů ve vaší tabulce, který by měl být 0 pro data bez dat.



  1. regex v SQL k detekci jedné nebo více číslic

  2. SELECT data z jiného schématu v oracle

  3. MySQL dotaz, který počítá částečné součty

  4. Ukládání souborů do SQL databáze pomocí FILESTREAM – část 2