У меня есть SQL-оператор, в котором я хочу выбрать мин даты:
SELECT EEEV_EMPL_ID, MIN(EEEV_DT), prev
Но я не хочу включать в мин столбец prev, но я хочу, чтобы этот столбец был в результате.Скажем, у меня есть
1 3/5/2018 UB3
1 5/28/2018 4A
, где первый столбец - это идентификатор сотрудника, второй - дата, третий - пред.Если я сделаю это, обе строки будут возвращены, потому что предыдущий столбец отличается.Я хочу вернуть только строку с минимальной датой, независимо от того, был ли предыдущий столбец другим.Как мне это сделать?
Это полный оператор:
SELECT EEEV_EMPL_ID, EEEV_DT, prev
FROM (
SELECT EEEV_EMPL_ID, EEEV_DT, EEEV_CCTR_ID,LAG(EEEV_CCTR_ID)
OVER(ORDER BY EEEV_EMPL_ID DESC, EEEV_DT DESC) AS prev
FROM CDAS.VDWHEEEV1 eeev1
WHERE extract(year from eeev1.eeev_dt) =
(select extract(year from sysdate) from dual)
ORDER BY EEEV_EMPL_ID
) x
GROUP BY EEEV_EMPL_ID, prev
ORDER BY EEEV_EMPL_ID
Это запрос оракула, но я буду использовать его в OPENQUERY на сервере SQL.
Обновление:
ОК, поэтому некоторые люди не могут понять, позвольте мне попробовать это:
00012662 3/5/18 2C
00012662 5/28/18 UB3
00037465 3/19/18 PA
00037465 5/28/18 UB
...
Я хочу эти две строкивернулся.Для каждого сотрудника я хочу строку минимального значения даты.Но поскольку третий столбец отличается, минимальное значение даты будет возвращать каждую строку.Не знаю, как проще спросить это.
00012662 3/5/18 2C
00037465 3/19/18 PA