Я хочу видеть результат моего запроса как «успешный» или «неудачный» в зависимости от условия - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу написать оператор case, в котором я могу видеть результат в одной строке «PASS» или «FAIL» в зависимости от условия.

select max(a.ODS_Process_Timestamp) from ODS.DW_COUNTRY a where a.ODS_CURRENT_FLAG=1;

вывод этого значения

06-FEB-19 06.25.40.000000000 AM

select a.ODS_Process_Timestamp,a.ODS_CURRENT_FLAG from ODS.DW_COUNTRY a 
where a.ODS_CURRENT_FLAG=1 group by a.ODS_CURRENT_FLAG,a.ODS_Process_Timestamp;

на выходе это

ODS_Process_Timestamp                    ODS_CURRENT_FLAG

06-FEB-19 06.25.40.000000000 AM          1

Теперь я хочу получить регистр, где я буду сравнивать первый запрос max (a.ODS_Process_Timestamp) равен 2-му запросу ODS_Process_Timestamp, так что это пароль, иначе не получится.

 select case when 
 (select max(a.ODS_Process_Timestamp) from ODS.DW_COUNTRY a where 
 a.ODS_CURRENT_FLAG=1)=(l.ODS_Process_Timestamp from
 (select a.ODS_Process_Timestamp,a.ODS_CURRENT_FLAG from ODS.DW_COUNTRY a 
 where a.ODS_CURRENT_FLAG=1 group by 
 a.ODS_CURRENT_FLAG,a.ODS_Process_Timestamp)l)
 then 'Pass' else 'Fail' 
 end as Timestamp_validation from ODS.DW_COUNTRY;

Ожидаемый результат должен быть примерно таким:

Timestamp_validation - PASS

1 Ответ

0 голосов
/ 06 февраля 2019

Я не уверен, что это то, что вы хотите, но вот предположение.Я думаю, что вы пытаетесь увидеть, равно ли максимальное значение ODS_Process_Timestamp для всех строк ODS_Process_Timestamp в одной строке с ODS_CURRENT_FLAG = 1.

create table DW_COUNTRY
(ODS_Process_Timestamp timestamp,
 ODS_CURRENT_FLAG number);

insert into DW_COUNTRY values (systimestamp,1);
insert into DW_COUNTRY values (systimestamp,1);
insert into DW_COUNTRY values (systimestamp,1);
commit;
--host sleep 1
--insert into DW_COUNTRY values (systimestamp,0);
--commit;


select case when 
(select 
 max(a.ODS_Process_Timestamp) 
 from DW_COUNTRY a)=
(select max(ODS_Process_Timestamp)
 from DW_COUNTRY a 
 where a.ODS_CURRENT_FLAG=1)
then 'Pass' else 'Fail' 
end as Timestamp_validation 
from dual;

Раскомментируйте закомментированные строки, чтобы увидеть, что это не удалось.

Отредактировано для обработки нескольких строк с флагом = 1.

Бобби

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...