Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL não reconhecendo o alias da coluna na cláusula where


Um alias pode ser usado em uma lista de seleção de consulta para dar um nome diferente a uma coluna. Você pode usar o alias nas cláusulas GROUP BY, ORDER BY ou HAVING para se referir à coluna.

O SQL padrão não permite referências a aliases de coluna em uma cláusula WHERE. Essa restrição é imposta porque quando a cláusula WHERE é avaliada, o valor da coluna pode ainda não ter sido determinado.

Portanto, a seguinte consulta é 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>

O alias da coluna é permitido em:
  • GRUPO POR
  • ORENDER POR
  • TER

Você pode consultar o alias da coluna na cláusula WHERE nos seguintes casos:
  1. Subconsulta
  2. Expressão de tabela comum (CTE)

Por exemplo,
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>