Câu trả lời này tương tự như câu trả lời của Nicholas, điều này không có gì đáng ngạc nhiên vì bạn cần một truy vấn con có CONNECT BY
để đưa ra một danh sách các ngày. Sau đó có thể đếm ngày trong khi kiểm tra ngày trong tuần. Sự khác biệt ở đây là nó hiển thị cách nhận giá trị số ngày trong tuần trên mỗi dòng của kết quả:
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
Tổng số là bao gồm, có nghĩa là nó bao gồm FromDate
và ThruDate
. Truy vấn này giả định rằng ngày của bạn không có thành phần thời gian; nếu có, bạn sẽ cần TRUNC
các cột ngày trong truy vấn con.