Tato odpověď je podobná odpovědi Nicholase, což není překvapením, protože potřebujete dílčí dotaz s CONNECT BY
sestavit seznam termínů. Data pak lze spočítat při kontrole dne v týdnu. Rozdíl je v tom, že ukazuje, jak získat hodnotu počtu dnů v týdnu na každém řádku výsledků:
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
Počet je včetně, což znamená, že zahrnuje FromDate
a ThruDate
. Tento dotaz předpokládá, že vaše data nemají časovou složku; pokud ano, budete muset TRUNC
sloupce data v dílčím dotazu.