Te rzeczy są zwykle wykonywane za pomocą tabeli, która zawiera listę wszystkich dni roboczych w roku, zamiast naiwnej formuły, takiej jak:
CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5
THEN 1 + (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW'))
ELSE 1
END --(on monday to thursday this returns 2 to 5, on fri/sat/sun this returns 1)
CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5
THEN TRUNC (SYSDATE) + 1
ELSE TRUNC (SYSDATE + 4), 'IW')
END --(on monday to thursday this returns tomorrow's date, on fri/sat/sun it returns next monday's date)
Korzystanie z tabeli pozwala uwzględnić takie rzeczy, jak święta państwowe, święta państwowe, święta religijne, dni głosowania, dni żałoby, dni wolne od pracy, które mogą wystąpić z powodów firmowych lub politycznych itp. Utrzymanie stołu staje się wtedy ważnym zadaniem. Pobieranie następnego dnia roboczego jest zasadniczo przypadkiem zapytania tabeli o MIN(date)
WHERE date > current_date