Esta respuesta es similar a la de Nicholas, lo cual no es una sorpresa porque necesita una subconsulta con un CONNECT BY
para hacer girar una lista de fechas. Las fechas se pueden contar mientras se comprueba el día de la semana. La diferencia aquí es que muestra cómo obtener el valor de conteo de días de la semana en cada línea de los resultados:
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
El recuento es inclusivo, lo que significa que incluye FromDate
y ThruDate
. Esta consulta asume que sus fechas no tienen un componente de tiempo; si lo hacen, deberá TRUNC
las columnas de fecha en la subconsulta.