具有多语句的SQL case查询
我正在尝试使用case query创建一个新列,但我还想在其他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
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
中定义的列别名。查询是否完全如图所示?因为您有一个额外的逗号,并且我已修复它。抱歉@osocase
表达式。对于这两个选项,我都同意@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 ---
)