Điều này sẽ giúp bạn có được tất cả các ngày bị thiếu trong một năm ( SQL Fiddle ).
all_dates
tạo danh sách tất cả các ngày của năm 2012 (điều chỉnh theo yêu cầu) và LEFT JOIN
kiểm tra IS NULL
loại bỏ những ngày tồn tại trong bảng nguồn của bạn.
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
;
Đảm bảo sử dụng biến liên kết thay vì mã hóa cứng ngày ba lần.