Dette svar ligner Nicholas's, hvilket ikke er en overraskelse, fordi du har brug for en underforespørgsel med en CONNECT BY
at lave en liste over datoer. Datoerne kan så tælles, mens du tjekker for ugedagen. Forskellen her er, at den viser, hvordan man får ugedages optællingsværdi på hver linje i resultaterne:
SELECT
FromDate,
ThruDate,
(SELECT COUNT(*)
FROM DUAL
WHERE TO_CHAR(FromDate + LEVEL - 1, 'DY') NOT IN ('SAT', 'SUN')
CONNECT BY LEVEL <= ThruDate - FromDate + 1
) AS Weekday_Count
FROM myTable
Optællingen er inklusive, hvilket betyder, at den inkluderer FromDate
og ThruDate
. Denne forespørgsel antager, at dine datoer ikke har en tidskomponent; hvis de gør det, skal du TRUNC
datokolonnerne i underforespørgslen.