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

Finden Sie fehlende Daten mit SQL

Dadurch erhalten Sie alle fehlenden Tage für ein Jahr (SQL Fiddle ). ).

all_dates erzeugt eine Liste aller Daten von 2012 (nach Bedarf anpassen) und den LEFT JOIN Prüfung auf IS NULL eliminiert die Daten, die in Ihrer Quelltabelle vorhanden sind.

WITH all_dates AS (
  SELECT TO_DATE('01-jan-2012') + ROWNUM - 1 AS d
  FROM dual
  CONNECT BY ROWNUM <= ADD_MONTHS(TO_DATE('01-jan-2012'), 12 ) - TO_DATE('01-jan-2012')
)
SELECT all_dates.d
FROM all_dates
LEFT JOIN t ON ( t.d = all_dates.d )
WHERE t.d IS NULL
ORDER BY all_dates.d
;

Stellen Sie sicher, dass Sie eine Bindungsvariable verwenden, anstatt das Datum dreimal fest zu codieren.