Я пытаюсь написать оператор case, который возвращает единственное значение, как только он находит правильное значение из каждого оператора "WHEN". Как только он находит подходящее значение, запрос не должен пытаться оценить другие операторы.
SELECT
DT1.COMPANY_ID
, CASE
WHEN DT1.RATING_NUMBER = 2 THEN DT1.UNIQUE_ENTRY_ID
WHEN DT1.RATING_NUMBER = 1 THEN DT1.UNIQUE_ENTRY_ID
WHEN DT1.RATING_NUMBER = 3 THEN DT1.UNIQUE_ENTRY_ID
END AS UNIQUE_ENTRY_ID
FROM
RATINGS_DATA DT1
ОБРАЗЕЦ ДАННЫХ
create table COMP_RESULTS (COMPANY_ID varchar2(20),RATING_NUMBER number, UNIQUE_ENTRY_ID varchar2(20));
insert into COMP_RESULTS values ('Org00001','1','ENTRY_C1_1');
insert into COMP_RESULTS values ('Org00001','2','ENTRY_C1_2');
insert into COMP_RESULTS values ('Org00001','3','ENTRY_C1_3');
insert into COMP_RESULTS values ('Org00002','2','ENTRY_C2_2');
insert into COMP_RESULTS values ('Org00002','3','ENTRY_C2_3');
insert into COMP_RESULTS values ('Org00003','3','ENTRY_C3_3');
За каждый день публикуются рейтинговые номера для каждой компании; иногда все, иногда не все). Если рейтинг равен 1, он создает соответствующий уникальный идентификатор. Если рейтинговое число равно 2, ID соответствующего кода освобождается. Если рейтинг «1» выпущен, запрос приносит ID компании и соответствующий UNIQUE_ENTRY_ID
для него. это не должно беспокоить, глядя на второе утверждение «КОГДА». Если рейтинг «1» не существует, то он пытается 2, если ни один не существует, 3 и т. Д. И т. Д.
РЕЗУЛЬТАТЫ ОБРАЗЦА
Org00001 2 ENTRY_C1_1
Org00002 2 ENTRY_C2_2
Org00003 3 ENTRY_C3_3
Может кто-нибудь помочь, пожалуйста?