#sql #oracle
#sql #Oracle
Вопрос:
У меня есть один вопрос, я создаю представление с большим количеством случаев для представления флага.
Мне нужно привести ПРИМЕР с другим ПРИМЕРОМ, но я не знаю, какой самый простой способ, я не знаю, нужно ли мне каждый раз приводить ПРИМЕР, потому что в этом случае мой SQL может быть очень длинным. Другое решение?
SELECT
SR.SERVICE_REQUEST_ID,
SR.COMPLAINT_DATE_YYYYMMDD,
-- Contact Center RSF
CASE
WHEN CUR_DD.DIVISION IN ('CX - CC BACK OFFICE 1', 'CX - CC MIDDLE OFFICE')
THEN 'BUSINESS(BO)'
WHEN CUR_DD.DIVISION LIKE '%Dispatcher%'
THEN 'BUSINESS'
WHEN CUR_DD.DIVISION = 'CX - CC INFODESK'
THEN 'BUSINESS(FO)'
WHEN CUR_DD.DIVISION LIKE '%FINES%' OR CUR_DD.DIVISION LIKE '%INAMI%'
THEN 'FINES'
WHEN CUR_DD.DIVISION LIKE '%Key Account%'
THEN 'KASD'
WHEN CUR_DD.DIVISION LIKE '%Philately %'
THEN 'PHILATELY'
WHEN CUR_DD.DIVISION LIKE '%PI%'
OR CUR_DD.DIVISION LIKE '%Postinfo %'
THEN 'POSTINFO'
WHEN CUR_DD.DIVISION = 'CX - CC BACK OFFICE 2'
THEN 'PRESS'
WHEN CUR_DD.DIVISION = 'CC FO First Line' OR CUR_DD.DIVISION LIKE '%MRS_CC%' OR CUR_DD.DIVISION LIKE '%DMM%' OR CUR_DD.DIVISION LIKE '%Parcels%' OR CUR_DD.DIVISION LIKE '%International%'
THEN 'RESISENTIAL'
WHEN CUR_DD.DIVISION LIKE '%RSS VIP%'
THEN 'VIP'
END AS "Contact center RSF",
--SLA Back Office
CASE
"CONTACT CENTER RSF" = 'FINES'
THEN YES
END AS "TEST3",
Комментарии:
1. Здравствуйте и спасибо, я пытаюсь, но у меня есть одно сообщение об ошибке с select . Экран проверки
Ответ №1:
Вы можете вложить CASEs
, используя только круглые скобки; например:
with testTable (x) as (
select 'one' from dual UNION ALL
select 'two' from dual
)
select x,
case (
case
when x = 'one' then 1
when x = 'two' then 2
end
)
when 1 then 'value one'
when 2 then 'value two'
end
from testTable
Конечно, другим способом может быть переписывание вашего кода, чтобы использовать только один CASE
для обработки всех логик, например, это то же самое, что и предыдущий:
with testTable (x) as (
select 'one' from dual UNION ALL
select 'two' from dual
)
select x,
case
when x = 'one' then 'value one'
when x = 'two' then 'value two'
end
from testTable
Для полноты картины учтите, что вы можете использовать более сложные условия CASE
, например:
CASE
when a = 'kk' and (b=1 or not c = 8) ...
...
Комментарии:
1. Круглые скобки вокруг вложенного СЛУЧАЯ не нужны: dbfiddle.uk /…
2. Я новичок в SQL, и синтаксис сложный. .