Questa risposta è simile a quella di Nicholas, il che non è una sorpresa perché hai bisogno di una sottoquery con un CONNECT BY
per creare un elenco di date. Le date possono quindi essere contate mentre si controlla il giorno della settimana. La differenza qui è che mostra come ottenere il valore del conteggio dei giorni della settimana su ciascuna riga dei risultati:
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
Il conteggio è inclusivo, il che significa che include FromDate
e ThruDate
. Questa query presuppone che le tue date non abbiano una componente temporale; in tal caso dovrai TRUNC
le colonne della data nella sottoquery.