Dit antwoord is vergelijkbaar met dat van Nicholas, wat geen verrassing is omdat je een subquery nodig hebt met een CONNECT BY
om een lijst met datums uit te draaien. De datums kunnen dan worden geteld tijdens het controleren op de dag van de week. Het verschil hier is dat het laat zien hoe je de weekdagtellingswaarde op elke regel van de resultaten kunt krijgen:
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
Het aantal is inclusief, wat betekent dat het FromDate
. omvat en ThruDate
. Deze query gaat ervan uit dat uw datums geen tijdcomponent hebben; als ze dat doen, moet je TRUNC
de datumkolommen in de subquery.