Выбор первого ряда из группы после заказа - PullRequest
0 голосов
/ 06 сентября 2018

Вот как выглядит мой стол:

appl_db_srvr_xref_id  secrty_ctl_id assmt_dt  cmdb_id  secrty_ctl_elemnt_impmtn_cd
       180                 43       1/1/2018    227         N 
       180                 43       9/31/2018   227         Y
       179                 28       1/1/2018    710         N
       179                 29       2/2/2018    710         N
       179                 43       3/3/2018    710         N

Мне нужно сгруппировать (appl_db_srvr_xref_id, secrty_ctl_id и cmdb_id) сортировку по дате и вернуть самую последнюю строку. Так что в этом случае я хотел бы вернуть:

180   43   227   Y
179   28   710   N
179   29   710   N
179   43   710   N

что я пытаюсь это:

SELECT secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt 
 FROM tablename 
 GROUP BY 
       secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id 
 ORDER BY assmt_dt desc

1 Ответ

0 голосов
/ 06 сентября 2018

Использовать аналитическую функцию row_number ():

select
       secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt
from
(
SELECT secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt,
       row_number() over (partition by appl_db_srvr_xref_id, secrty_ctl_id, cmdb_id order by assmt_dt desc) rn
 FROM tablename 
 )s
where rn=1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...