sql >> Base de Datos >  >> RDS >> Oracle

SQL no reconoce el alias de columna en la cláusula where

Se puede usar un alias en una lista de selección de consulta para dar a una columna un nombre diferente. Puede usar el alias en las cláusulas GROUP BY, ORDER BY o HAVING para hacer referencia a la columna.

SQL estándar no permite referencias a alias de columna en una cláusula WHERE. Esta restricción se impone porque cuando se evalúa la cláusula WHERE, es posible que aún no se haya determinado el valor de la columna.

Entonces, la siguiente consulta es ilegal:

SQL> SELECT empno AS employee, deptno AS department, sal AS salary
  2  FROM emp
  3  WHERE employee = 7369;
WHERE employee = 7369
      *
ERROR at line 3:
ORA-00904: "EMPLOYEE": invalid identifier


SQL>

El alias de la columna está permitido en:

  • AGRUPAR POR
  • ORDENAR POR
  • TENER

Puede hacer referencia al alias de la columna en la cláusula WHERE en los siguientes casos:

  1. Subconsulta
  2. Expresión de tabla común (CTE)

Por ejemplo,

SQL> SELECT * FROM
  2  (
  3  SELECT empno AS employee, deptno AS department, sal AS salary
  4  FROM emp
  5  )
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL> WITH DATA AS(
  2  SELECT empno AS employee, deptno AS department, sal AS salary
  3  FROM emp
  4  )
  5  SELECT * FROM DATA
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL>