คุณต้องการเป็นปฏิทินโต๊ะสำหรับเรื่องนี้ คุณเริ่มต้นกับปฏิทินและทิ้งร่วมกับทุกอย่างอื่นอีกใช้ BETWEEN
ตรรกะ.
คุณสามารถใช้ของจริงโต๊ะด้วย หรือคุณสามารถสร้างมันขึ้นบินได้เหมือนนี้:
WITH
L0 AS ( SELECT c = 1
FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),
(1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ),
L1 AS ( SELECT c = 1 FROM L0 A, L0 B, L0 C, L0 D ),
Nums AS ( SELECT rownum = ROW_NUMBER() OVER(ORDER BY (SELECT 1))
FROM L1 ),
Dates AS (
SELECT TOP (DATEDIFF(day, '20141231', GETDATE()))
Date = DATEADD(day, rownum, '20141231')
FROM Nums
)
SELECT
d.Date,
NumEmployed = COUNT(*)
FROM Dates d
JOIN YourTable t ON d.Date BETWEEN t.Hired AND t.Retired
GROUP BY
d.Date;
ถ้าวันของคุณมีเวลาส่วนประกอบแล้วคุณต้องการที่จะใช้ >= AND <
ตรรกะ