Как получить строки с условием MAX, включающим несколько столбцов - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть таблица Employee со следующими столбцами:

  • Emp_Id
  • Emp_Name
  • ProjectName
  • ProjectStartDate
  • ProjectEndDate
  • Emp_ManagerId

Каждый сотрудник может работать в нескольких проектах одновременно.

Я хочу получить все записи в таблице для каждого сотрудникас макс ProjectStartDate.Если у сотрудника есть несколько записей с одинаковым ProjectStartDate, то должна быть возвращена запись с максимальным ProjectEndDate.

Все даты в ММ / ДД / ГГГГ

enter image description here

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Вы можете использовать ROW_NUMBER() в подзапросе для ранжирования записей каждого сотрудника по убыванию даты начала и окончания проекта, а затем отфильтровать верхнюю запись каждого сотрудника во внешнем запросе:

SELECT * 
FROM (
    SELECT 
        e.*,
        ROW_NUMBER() OVER(PARTITION BY Emp_Id ORDER BY ProjectStartDate DESC, ProjectEndDate  DESC) rn
    FROM Employee e
) x
WHERE rn = 1
0 голосов
/ 21 сентября 2019

Вы можете использовать функцию ROW_NUMBER(), например:

select *
from (
  select
    *,
    row_number() over(partition by emp_id 
      order by projectstartdate desc, projectenddate desc) as rn
  from employee
) x
where rn = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...