Sql Oracle案例表达式混乱
有人能告诉我下面的问题是什么吗Sql Oracle案例表达式混乱,sql,oracle,Sql,Oracle,有人能告诉我下面的问题是什么吗 select case when ANALYSISCODE is null and studydomainmdata.studydomainmetadataid > 0 then 'CD' when ANALYSISCODE is null and studydomainmdata.studydomainmetadataid < 0
select case
when ANALYSISCODE is null and
studydomainmdata.studydomainmetadataid > 0
then 'CD'
when ANALYSISCODE is null and
studydomainmdata.studydomainmetadataid < 0
then 'CD1'
when analysiscode is not null
then ANALYSISCODE
else 'N/A'
end as ANALYSISCODE
from studyanalysis
inner join (slmetadata
inner join studydomainmdata
on slmetadata.slmetadataid = studydomainmdata.slmetadataid and
studydomainmdata.studydomainmetadataid=-9)
on studyanalysis.analysisid = slmetadata.analysisid;
我的预期结果是:
CD1如果studydomainmetadataid小于0
CD如果studydomainmetadataid>0 i,e 85
如果ANALYSISCODE不为空,则为“xxx”
我得到的是空的ANALYSISCODE。我猜您的查询根本没有返回任何东西,因此案例没有被测试,您没有得到任何返回的结果,甚至您的ELSE默认值也没有 要测试此猜测,请使用SELECT COUNT*将查询换行,如下所示:
SELECT count(*) FROM
(
select case
when ANALYSISCODE is null and studydomainmdata.studydomainmetadataid > 0
then 'CD'
when ANALYSISCODE is null and studydomainmdata.studydomainmetadataid < 0
then 'CD1'
when analysiscode is not null
then ANALYSISCODE
else 'N/A'
end as ANALYSISCODE
from studyanalysis
inner join (slmetadata
inner join studydomainmdata
on slmetadata.slmetadataid = studydomainmdata.slmetadataid
and studydomainmdata.studydomainmetadataid=-9)
on studyanalysis.analysisid = slmetadata.analysisid
)
如果count*返回0,那么我的猜测是正确的,并且您的查询根本没有返回任何数据,因此为空值
CASE语句只能处理查询返回的记录,如果没有返回的记录,则不会执行CASE
希望它能帮助…欢迎来到StackOverflow。下次请使用更具描述性的标题,并使用{}按钮格式化您的代码。并显示您遇到的任何错误;如果您得到的是错误的结果而不是错误,那么表结构、样本数据和预期输出。@TonyAndrews-我很困惑;为什么它不会得到“N/A”?我不明白这怎么会给空值。我想知道是否有一个analysiscode是空白的,而不是空的,但我似乎遗漏了一些东西。可能是咖啡。@Alex,不,是我需要咖啡,你说得很对@用户1562787,您确定您的查询实际上返回了任何值吗?如果选择“X”而不是大小写,则会得到X或NULL。