特定の期間、2つのスーパーバイザにマップされた従業員。従業員が最大期間をマッピングした上司を探す必要があります。 '01/2010'/01 '01/2010'/09/2010' 分の12 '31のSQL Serverクエリ
からスーパーバイザBにマッピング '31/08/2010' スーパーバイザAにマッピング社員
スーパーバイザーの最長期間は 'A'
これは、SQL Serverのクエリを使用して見つける必要があります。
特定の期間、2つのスーパーバイザにマップされた従業員。従業員が最大期間をマッピングした上司を探す必要があります。 '01/2010'/01 '01/2010'/09/2010' 分の12 '31のSQL Serverクエリ
からスーパーバイザBにマッピング '31/08/2010' スーパーバイザAにマッピング社員
スーパーバイザーの最長期間は 'A'
これは、SQL Serverのクエリを使用して見つける必要があります。
DDLがまだ投稿されていないため、これは役立つかもしれません。
Select e.EmployeeName,
s.SupervisorName,
es.StartDate,
es.EndDate,
EmpMaxDays.MaxDays as 'TotalNumberOfDaysAssigned'
From dbo.Employees e
Left Join dbo.EmployeeSupervisors es on es.EmployeeID = e.EmployeeId
Left Join
(
Select Max(DateDiff(day, es.StartDate, es.EndDate)) as 'MaxDays',
EmployeeId
From dbo.EmployeeSupervisor
Group By EmployeeId
)EmpMaxDays on es.EmployeeId = EmpMaxDays.EmployeeId
Left Join dbo.Supervisros s on es.SupervisorId = s.SupervisorId
Where DateDiff(day, es.StartDate, es.EndDate) = EmpMaxDays.MaxDays
And es.EmployeeId = EmpMaxDays.EmployeeId
ランク分割を使用することをお勧めします。この方法で、ランク= 1(正しい一致)を選択できます。 hereを参照してください。
これまでに書いたコードを投稿してください。人々は一般的にあなたのためのコードを書くのが好きではありません。それはそのままで、これは仕事の説明であり、質問ではありません。 –
いくつかのサンプルデータを作成できるようにDDLを投稿できますか?少なくともあなたのテーブルとデータの一般的な考えを私たちに与えることができるかもしれません。 – codingbadger
テーブル構造を投稿することができます –