Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle案例表达式混乱_Sql_Oracle - Fatal编程技术网

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。