У меня есть таблица TAB, структура которой выглядит следующим образом:
create table TAB (
TRAIN_NUMBER varchar2(5),
TRAIN_START_DATE date,
EVENT_CODE varchar2(2),
INTERCHANGE_FLAG number
)
Я вставил в нее 2 записи
Insert into TAB Values('12987','04-Nov-2019','HO',1);
Insert into TAB Values('12987','04-Nov-2019','TO',1);
Мне нужна только одна строка на выходе, для которой ранг равен 1, поэтому я разделил данные на основе Train No и TRAIN_START_DATE, но я не могу получить тот факт, что как две разные записи могут получить одинаковые ранги в случае DENSE_RANK()
?
SELECT TRAIN_NUMBER, TRAIN_START_DATE , EVENT_CODE
FROM (
SELECT TRAIN_NUMBER, TRAIN_START_DATE, EVENT_CODE,
DENSE_RANK() OVER (PARTITION BY TRAIN_NUMBER, TRAIN_START_DATE ORDER BY INTERCHANGE_FLAG) my_rank
FROM TAB
)
WHERE my_rank = 1;
, которые я получаюВыведите как
TRAIN_NUMBER TRAIN_START_DATE EVENT_CODE
12987 04-NOV-19 HO
12987 04-NOV-19 TO
Мне нужна только одна строка, у которой my_rank = 1, и для этого я использовал DENSE_RANK()
.
Что я должен применить в запросе, чтобы получить только одну запись?