Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 case查询_Sql_Oracle - Fatal编程技术网

具有多语句的SQL case查询

具有多语句的SQL case查询,sql,oracle,Sql,Oracle,我正在尝试使用case query创建一个新列,但我还想在其他case查询中使用它,如下所示,我无法执行下面的查询。请给出你的意见。谢谢 select case when ccis.id is not null then 'High' else null end as category, case when category is not NULL then True else False end as fl

我正在尝试使用case query创建一个新列,但我还想在其他case查询中使用它,如下所示,我无法执行下面的查询。请给出你的意见。谢谢

    select

    case  when ccis.id  is not null then 'High'
    else null 
    end as category,
    
    case  
    when category is not NULL then True
    else False 
    end as flag



    FROM "view1" as ccis left outer join "view2" as cctm 
    on ccis.study_name = cctm.study_name 


    from goes here ---
    Join  statement goes here ---

您不能在下一个
案例
表达式中使用
类别

但是,您可以将相同的逻辑应用于前面的
案例

select
  case when id  is not null then 'High' end as category,
  case when id  is not null then 'True' else 'False' end as flag
  ..........................
因为当
id
不是
null
时,
category
不是
null

我从第一个
CASE
表达式中删除了
else null
,因为它是不需要的,因为当
分支中的任何条件都不满足时,返回
null
是默认功能。

如何,(您可以简单地再次使用id来确定标志,或者如果您说您不能,只需添加一个外部子句并在那里使用category)


用您正在使用的数据库标记您的问题。作为SQL中的一般规则,您不能在同一个
select
(或
where
from
中的表达式中使用
select
中定义的列别名。查询是否完全如图所示?因为您有一个额外的逗号,并且我已修复它。抱歉@oso
case
表达式。对于这两个选项,我都同意@forpas关于删除else part first case语句的观点
SELECT
 CASE
    WHEN id IS NOT NULL THEN
     'High'
    ELSE
     NULL
 END AS category,
 CASE
    WHEN id IS NOT NULL THEN
     TRUE
    ELSE
     FALSE
 END AS flag
FROM   goes here ---
JOIN   STATEMENT goes here ---

OR
    
SELECT
CASE
    WHEN category IS NOT NULL THEN
     TRUE
    ELSE
     FALSE
 END AS flag
FROM
( 
  SELECT
   CASE
      WHEN id IS NOT NULL THEN
       'High'
      ELSE
       NULL
   END AS category,
  FROM   goes here ---
  JOIN   STATEMENT goes here ---
)