DhananjayanP Ответов: 3

Получить последнюю дату документа всех сотрудников в SQL server


Get all the employees latest Document date in sql server 


No	Employee	DocumentDateNew
1	Employee1	3/22/2018
2	Employee1	5/22/2018
3	Employee1	10/23/2017
4	Employee2	3/21/2018
5	Employee2	6/22/2018
6	Employee2	10/23/2017
7	Employee2	10/12/2017
8	Employee3	3/22/2018
9	Employee3	11/10/2017



мне нужен такой результат как
NO	Employee	DocumentDateNew
1	Employee1	3/22/2018
4	Employee2	3/21/2018
8	Employee3	3/22/2018


Что я уже пробовал:

Получить запись всех сотрудников на основе последних документов дата

3 Ответов

Рейтинг:
2

dkamble 10358990

выберите Employee, max(DocumentDateNew) в качестве DocumentDateNew из emptable group by Employee


DhananjayanP

спасибо за ваш ответ, но я получаю имя сотрудника как дубликат

itsmypassion

Не включайте столбец "нет" в список Group by.

Рейтинг:
1

itsmypassion

SELECT EMPLOYEE,MAX(DOCUMENTDATE) FROM EMPLOYEETABLE GROUP BY EMPLOYEE


DhananjayanP

спасибо за ваш ответ, но я получаю имя сотрудника как дубликат

Рейтинг:
0

Richard Deeming

Если вам нужно включить столбец "нет", то:

WITH cte As
(
    SELECT
        No,
        Employee,
        DocumentDateNew,
        ROW_NUMBER() OVER (PARTITION BY Employee ORDER BY DocumentDateNew DESC) As RN
    FROM
        YourTable
)
SELECT
    No,
    Employee,
    DocumentDateNew
FROM
    cte
WHERE
    RN = 1
;

Демонстрация[^]
ROW_NUMBER (Transact-SQL) | Microsoft Docs[^]

NB: Ваш ожидаемый результат неверен. Если взять Employee1 в качестве примера, то 22 мая 2018 года будет позже 22 марта 2018 года, поэтому выходные данные должны возвращать строку 2, а не строку 1.


Maciej Los

5ed!