Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Daten aus der Tabelle anzeigen, auch wenn keine Daten vorhanden sind!! Orakel

Zunächst klingt es so, als würde Ihre Anwendung von einer Kalendertabelle profitieren. Eine Kalendertabelle ist eine Liste von Daten und Informationen zu den Daten.

Zweitens können Sie dies tun, ohne temporäre Tabellen zu verwenden. Hier ist der Ansatz:

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

Hier ist die Idee. Die Alias-Konstanten zeichnen das früheste Datum in Ihrer Tabelle auf. Die Alias-Daten erstellen dann eine Folge von Daten. Die innere Unterabfrage berechnet mithilfe von rownum eine Folge von ganzen Zahlen und fügt diese dann zum ersten Datum hinzu. Beachten Sie, dass davon ausgegangen wird, dass Sie im Durchschnitt mindestens eine Transaktion pro Datum haben. Wenn nicht, können Sie einen größeren Tisch verwenden.

Der letzte Teil ist der Join, der verwendet wird, um Informationen über die Daten zurückzugeben. Beachten Sie die Verwendung von count(t.date) anstelle von count(*). Dies zählt die Anzahl der Datensätze in Ihrer Tabelle, die für Daten ohne Daten 0 sein sollte.