2011-01-04 3 views
0

Сотрудник, сопоставленный с 2 ​​супервизорами за определенные периоды. Мне нужно найти руководителя, который работник сопоставил максимальный период.Запрос SQL Server

Сотрудника Подключенного с супервизора А от '01/01/2010' до '31/08/2010' соотнесенных с супервизором B от '01/09/2010' на '31/12/2010'

Таким образом, максимальный период надзора «A»

Это должно найти использование SQL-запроса.

+0

Пожалуйста, разместите код, который вы написали. Люди обычно не любят просто писать свой код для вас. Как бы то ни было, это описание работы, а не вопрос. –

+1

Можете ли вы опубликовать некоторый DDL, чтобы мы могли создать некоторые образцы данных? По крайней мере, возможно, вы могли бы дать нам общее представление о ваших таблицах и данных. – codingbadger

+1

Можете ли вы опубликовать структуры таблиц –

ответ

1

Поскольку 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 
0

Предлагаю вам использовать разбиение по рангам. Таким образом, вы можете выбрать, где ранг = 1 (правильное совпадение). См. here.