gpt4 book ai didi

sql - Oracle CASE表达式困惑

转载 作者:行者123 更新时间:2023-12-02 03:57:54 25 4
gpt4 key购买 nike

谁能告诉我下面的查询出了什么问题?

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;

我的预期结果将是:

如果studydomainmetadataid小于0,则
  • CD1
  • CD,如果studydomainmetadataid> 0(i,e 85)
  • 'xxx'(如果AnalysisCODE不为空)

  • 我得到空的ANALYSISANACODE。

    最佳答案

    我猜您的查询根本不返回任何内容,因此CASE没有得到测试,您没有得到任何返回的结果(甚至没有ELSE的默认值)。

    要测试此猜测,请使用SELECT COUNT(*) FROM这样的查询来包装您的查询:

    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语句仅可用于查询返回的记录。

    希望能帮助到你...

    关于sql - Oracle CASE表达式困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720509/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com