Du har ret – SQL gør det ikke nemt at identificere manglende data. Den sædvanlige teknik er at forbinde din sekvens (med mellemrum) mod en komplet sekvens og vælge disse elementer i sidstnævnte sekvens uden en tilsvarende partner i dine data.
Så @BenHoffsteins forslag at opretholde en permanent dato tabel er en god en.
Ud over det kan du dynamisk oprette dette datointerval med en heltalstabel
. Forudsat integers
tabellen har en kolonne i
med tal på mindst 0 – 13, og at din tabel har sin datokolonne med navnet datestamp
:
SELECT candidate_date AS missing
FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
FROM integers
WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
WHERE datestamp is NULL;