我想将结尾的结果与查询中的另一个数据点进行比较。我正在使用PL / sql
CASE WHEN zz.code <> '0' THEN 'NYC'
WHEN zz.last IS NOT NULL THEN 'PARIS'
ELSE 'LA'
END AS NEW_CITY,
----这就是我在其下面尝试的,当然它不起作用
CASE When me.current_City = 'NEW_CITY' then 'Same'
Else 'Different'
end as Comparison
我希望比较列显示
'Same'
或'Different'
答案 0 :(得分:1)
除了order by
子句(see the docs)之外,您无法在同一级别的查询中引用列别名。
您可以使用内联视图并引用外部查询中的内部查询别名:
SELECT ..., CASE When current_City = NEW_CITY then 'Same'
Else 'Different' end as Comparison
FROM (
SELECT ..., me.current_City, CASE WHEN zz.code <> '0' THEN 'NYC'
WHEN zz.last IS NOT NULL THEN 'PARIS'
ELSE 'LA' END AS NEW_CITY,
...
)
或重复案例表达:
CASE When me.current_City =
CASE WHEN zz.code <> '0' THEN 'NYC'
WHEN zz.last IS NOT NULL THEN 'PARIS'
ELSE 'LA' END
then 'Same'
Else 'Different'
end as Comparison
根据您引用它的次数以及案例表达的时间长短,内联视图方法可能更简洁,更易于维护(因为您不必记住修改相同的多个副本)表达)。但是,如果您仅想要显示'same'
或'different'
,那么您根本不需要单独的new_city
别名,第二种方法是可能没关系。 (但要格式化它,以便后来有人更容易理解)。