Я ищу решение 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х (2x 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, поэтому пользователь может выбрать дату начала и окончания. У меня есть эта ошибка: «Типы не совпадают между якорем и рекурсивной частью в столбце« St_DATE »рекурсивного« CTE_DATE » – Scaver
Найденное решение. – Scaver