我有一個 sql 查詢,我需要根據某些條件比較我正在重命名的列的位置,但是我收到該列不存在的錯誤,我該怎么做?
select e.emp_nombre, nvl(e.emp_activo,1) as nivel
from gen_empresa e
where nivel = 1;
uj5u.com熱心網友回復:
您不能在 WHERE 子句中使用列別名,因為在創建列別名之前會評估 WHERE 子句。
nvl(e.emp_activo,1)在WHERE子句中使用相同的運算式:
select e.emp_nombre, nvl(e.emp_activo,1) as nivel
from gen_empresa e
where nvl(e.emp_activo,1) = 1;
或使用派生表:
select emp_nombre, nivel
from
(
select e.emp_nombre, nvl(e.emp_activo,1) as nivel
from gen_empresa e
)
where nivel = 1;
uj5u.com熱心網友回復:
您還可以將查詢撰寫為 CTE:
WITH TMP AS (select e.emp_nombre, nvl(e.emp_activo,1) as nivel
from gen_empresa e)
Select * from TMP where nivel=1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/407675.html
標籤:
