甲骨文案例陈述查询



我正在处理一个Oracle查询,以查找是否安装了诊断包。查询工作正常。

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'

在输出中,我需要添加另一个已安装的列。因此,如果 currently_used = 'TRUE',我需要显示如下所示的输出。

DIAGNOSTICS_package INSTALLED
1                   YES

我在 case 语句中的已安装列中遇到了问题。请指教。

谢谢

您的问题的最简单答案是,只需为第二列添加另一个 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'是查询条件的一部分。

但也许有一个更大的背景,这些事情是有意义的。

根据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'.

最新更新