Функция DECODE не присваивает значения, отличные от IP, NULL в процедуре - PullRequest
0 голосов
/ 14 января 2020

У меня есть хранимая процедура, в которой я назначаю IP1 сайтам IP, а если нет IP1, то это должно быть NonIP.

Но когда сайты не IP1 тогда декодирование не работает должным образом.

select  a.SAP_ID, decode (a.priority_site, 'IP1', 'IP', 'NonIP')  AS owners 
FROM
r4g_osp.enodeb a
LEFT JOIN app_wfm.wfm_candidate_status   st ON st.status = a.enodebstatus
WHERE a.sap_id in ('I-AP-NLGD-ENB-I001')
AND
a.scope IN (
    'EnodeB-Connected_Fibre',
    'EnodeB-Connected_MW'
 ) ;

Ниже мой вывод

output

пожалуйста, предложите, как установить NonIP, если значения пусто или пусто

1 Ответ

1 голос
/ 14 января 2020

Ваше внешнее объединение не является проблемой.

DECODE не является проблемой.

Запустите эту версию своего кода с комментариями DECODE и LEFT JOIN .

select * -- a.SAP_ID, decode (a.priority_site, 'IP1', 'IP', 'NonIP')  AS owners 
FROM
r4g_osp.enodeb a
-- LEFT JOIN app_wfm.wfm_candidate_status   st ON st.status = a.enodebstatus
WHERE a.sap_id in ('I-AP-NLGD-ENB-I001')
AND
a.scope IN (
    'EnodeB-Connected_Fibre',
    'EnodeB-Connected_MW'
 ) ;

Каков результат?

Если вы не получили строк из исходного запроса, вы не должны получать ни одной из этой версии. У DECODE нет данных для работы, потому что строки не возвращаются.

Внешнее объединение ничего не делает, потому что вы только получаете доступ и фильтруете данные из таблицы ENODEB. Поскольку это левое внешнее объединение, дополнительная фильтрация на основе кода состояния отсутствует.

...