Jawaban ini mirip dengan Nicholas, yang tidak mengejutkan karena Anda memerlukan subquery dengan CONNECT BY
untuk memutar daftar tanggal. Tanggal kemudian dapat dihitung sambil memeriksa hari dalam seminggu. Perbedaannya di sini adalah menunjukkan cara mendapatkan nilai hitungan hari kerja pada setiap baris hasil:
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
Hitungannya inklusif, artinya termasuk FromDate
dan ThruDate
. Kueri ini mengasumsikan bahwa tanggal Anda tidak memiliki komponen waktu; jika ya, Anda harus TRUNC
kolom tanggal dalam subkueri.