Oracle
 sql >> Database >  >> RDS >> Oracle

Perché Oracle SQL non ci consente di utilizzare alias di colonna nelle clausole GROUP BY?

Non è solo Oracle SQL, infatti credo che sia conforme allo standard ANSI SQL (anche se non ho un riferimento per quello). Il motivo è che la clausola SELECT viene elaborata logicamente dopo la clausola GROUP BY, quindi al momento del GROUP BY gli alias non esistono ancora.

Forse questo esempio alquanto ridicolo aiuta a chiarire il problema e l'ambiguità che SQL sta evitando:

SQL> select job as sal, sum(sal) as job
  2  from scott.emp
  3  group by job;

SAL              JOB
--------- ----------
ANALYST         6000
CLERK           4150
MANAGER         8275
PRESIDENT       5000
SALESMAN        5600