Я пытаюсь получить результаты на следующих условиях. В моей таблице есть следующие столбцы: id, updateFlag, updateTime. Критерии, если несколько updateDates одинаковы, получить идентификатор с идентификатором updateFlag = 'Y', иначе получить последний updateTime id .
Вот мой SQL Скрипт;
updateFlag возможные значения 'Y', 'N', null
create table customer(id varchar2(20),updateFlag char(1),updateTime DATE);
insert into customer(id,updateFlag,updateTime) values(1,'N',to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
insert into customer(id,updateFlag,updateTime) values(2,'N',to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
insert into customer(id,updateFlag,updateTime) values(3,'Y',to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
commit;
, когда я использую следующий запрос, он работает нормально, так как один из флагов - «Y»;
select * from customer where id in(1,2,3) and updateFlag='Y' order by updateTime;
, но когда я вставляю следующий скрипт со смесью нулей и «N» для updateFlags, я ожидаю получить «N».
insert into customer(id,updateFlag,updateTime) values(1,'N',to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
insert into customer(id,updateFlag,updateTime) values(2,'N',to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
insert into customer(id,updateFlag,updateTime) values(3,null,to_date('16-JAN-20 04.54.37','DD-MON-RR HH.MI.SS'));
и еще одно условие, если недавний updateTime не равен другим строкам, получает недавний идентификатор.
Оценил помощь.
Извините для путаницы перефразируя вопрос здесь.
- Получите идентификатор, основанный на самом последнем обновленном времени.
- Если есть два или более последних обновленных времени с одинаковым значением, получите идентификатор, который имеет обновленный флаг = 'Y'
- Если есть два или более последних updatedTime с одинаковым значением, но ни один из них не имеет флага 'Y', получим значение с 'N'.