Utilice un campo calculado en la cláusula WHERE
Pregunta
¿Hay una manera de utilizar un campo calculado en la cláusula where
?
Quiero hacer algo como
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE TOTAL <> 0
;
pero me da ORA-00904: "TOTAL": invalid identifier
.
Así que tengo que usar
SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL
)
WHERE a+b <> 0
;
Solución
Lógicamente , la cláusula select
es una de las últimas partes de una consulta evaluado, por lo que los alias y columnas derivados no están disponibles. (Excepto para order by
, que lógicamente sucede última.)
Uso de una tabla derivada es de distancia alrededor de este:
select *
from (SELECT a, b, a+b as TOTAL FROM (
select 7 as a, 8 as b FROM DUAL
UNION ALL
select 8 as a, 8 as b FROM DUAL
UNION ALL
select 0 as a, 0 as b FROM DUAL)
)
WHERE TOTAL <> 0
;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow