私は、次の問題の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.
私は2週間で、彼らは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