我正在爲以下問題尋找SQL解決方案。 我想要一連串超過14天病假的員工名單。一段時間SQL獲取狀態
我有一個SQL表如下:
First_name, Last_Name, INDIRECT_ID, SHIFT_DATE
John, Doe, Sick, 2016-01-01
John, Doe, Sick, 2016-01-02
John, Doe, working, 2016-01-03
John, Doe, Sick, 2016-01-04
John, Doe, Sick, 2016-01-05
etc.
我想通過看這樣做,如果他們生病的10倍(2×5個工作日),在兩個星期。但也許有一個更簡單的解決方案。但現在我也得到重複的答案。
select FIRST_NAME, LAST_NAME
from (select t.*
,(select count(*)
from LABOR_TICKET t2
where t2.EMPLOYEE_ID = t.EMPLOYEE_ID and
t2.INDIRECT_ID = t.INDIRECT_ID and
t2.SHIFT_DATE >= t.SHIFT_DATE and
t2.SHIFT_DATE < DATEADD(day, 14, t.SHIFT_DATE)) NumWithin14Days
from LABOR_TICKET t
where SHIFT_DATE between '2016-01-01' and '2016-04-01'
) LABOR_TICKET
INNER JOIN
EMPLOYEE ON LABOR_TICKET.EMPLOYEE_ID = EMPLOYEE.ID
where NumWithin14Days >= 10 AND INDIRECT_ID = 'SICK'
謝謝!它在SQL Management Studio中可以正常工作,但是如何將此代碼實現到Microsoft SQL Server Report Builder中,以便用戶可以選擇其開始日期和結束日期。我有這樣的錯誤:「遞歸」CTE_DATE「的列」St_DATE「中的錨點和遞歸部分之間的類型不匹配 – Scaver
找到解決方案。 – Scaver