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

Find manglende datoer ved hjælp af SQL

Dette vil give dig alle manglende dage i et år (SQL Fiddle ).

all_dates genererer en liste over alle datoer for 2012 (juster efter behov), og LEFT JOIN søger efter IS NULL eliminerer de datoer, der findes i din kildetabel.

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
;

Sørg for at bruge en bind-variabel i stedet for at hårdkode datoen tre gange.



  1. Hvordan finder jeg alle underordnede rækker i MySQL?

  2. Projektlinks virker ikke på Wamp Server

  3. Fejl 404 ikke fundet med EM 12c

  4. Oracle optimerer OR + IN til OR + EXISTS, hvilket er meget langsomt