クエリ選択リストでエイリアスを使用して、列に別の名前を付けることができます。 GROUP BY、ORDER BY、またはHAVING句のエイリアスを使用して、列を参照できます。
標準SQLでは、WHERE句での列エイリアスへの参照は許可されていません。 WHERE句が評価されるときに、列の値がまだ決定されていない可能性があるため、この制限が課せられます。
したがって、次のクエリは不正です:
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>
列エイリアスは次の場所で許可されています:
- グループ化
- 注文者
- 持っている
次の場合、WHERE句で列エイリアスを参照できます。
- サブクエリ
- 共通テーブル式(CTE)
たとえば、
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>