SQL Server Query - PullRequest
       1

SQL Server Query

0 голосов
/ 04 января 2011

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

Сотрудник, сопоставленный с супервизором A с «01.01.2010» по «31.08.2010», сопоставленный супервизору B с 0109/2010 'до' 31/12/2010 '

Таким образом, максимальный период супервизора составляет' A '

Это должно быть найдено при использовании запроса сервера sql.

Ответы [ 2 ]

1 голос
/ 04 января 2011

Поскольку 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 голосов
/ 04 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...