Esta resposta é semelhante à de Nicholas, o que não é uma surpresa porque você precisa de uma subconsulta com um
CONNECT BY
para produzir uma lista de datas. As datas podem ser contadas durante a verificação do dia da semana. A diferença aqui é que ele mostra como obter o valor da contagem de dias da semana em cada linha dos 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
A contagem é inclusiva, o que significa que inclui
FromDate
e ThruDate
. Essa consulta pressupõe que suas datas não tenham um componente de hora; se isso acontecer, você precisará TRUNC
as colunas de data na subconsulta.