Oracle Запрос оператора регистра - PullRequest
0 голосов
/ 30 мая 2020

Я работаю над запросом Oracle, чтобы узнать, установлен ли пакет Diagnosti c Pack. Запрос работает нормально.

Select case when currently_used = 'TRUE' then 1
else 0
end DIAGNOSTICS_package
from dba_feature_usage_statistics
where name like '%Diagnostic Pack%'
and CURRENTLY_USED = 'TRUE'

В выводе мне нужно добавить еще один установленный столбец. Итак, если current_used = 'TRUE', мне нужно, чтобы вывод отображался, как показано ниже.

DIAGNOSTICS_package INSTALLED
1                   YES

Я столкнулся с проблемой со столбцом INSTALLED в операторе case. Пожалуйста, сообщите.

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

Самый простой ответ на ваш вопрос: просто добавьте еще одно выражение CASE для второго столбца:

Select case when currently_used = 'TRUE' then 1
else 0
end DIAGNOSTICS_package,
case when currently_used = 'TRUE' then 'YES' else 'NO' end INSTALLED
from dba_feature_usage_statistics
where name like '%Diagnostic Pack%'
and CURRENTLY_USED = 'TRUE'

Я действительно не понимаю, почему вам нужны два столбца, которые говорят вам об одном и том же по-разному .

Я также не понимаю, зачем вам вообще нужен оператор CASE, поскольку у вас есть and CURRENTLY_USED = 'TRUE' как часть условий запроса.

Но, возможно, есть более крупный контекст, в котором эти все имеет смысл.

1 голос
/ 30 мая 2020

Исходя из вашего предложения where, вам не нужно выражение case:

Select 1 as DIAGNOSTICS_package,
       'YES' as INSTALLED
from dba_feature_usage_statistics
where name like '%Diagnostic Pack%' and
      CURRENTLY_USED = 'TRUE'

Вы уже фильтруете CURRENTLY_USED = 'TRUE'.

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