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

Por que o Oracle SQL não nos permite usar aliases de coluna em cláusulas GROUP BY?


Não é apenas Oracle SQL, na verdade acredito que esteja em conformidade com o padrão ANSI SQL (embora não tenha uma referência para isso). A razão é que a cláusula SELECT é processada logicamente após a cláusula GROUP BY, portanto, no momento em que o GROUP BY é feito, os aliases ainda não existem.

Talvez este exemplo um tanto ridículo ajude a esclarecer o problema e a ambiguidade que o SQL está 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