Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi Oracle SQL ne nous permet-il pas d'utiliser des alias de colonne dans les clauses GROUP BY ?

Ce n'est pas seulement Oracle SQL, en fait je pense qu'il est conforme à la norme ANSI SQL (bien que je n'aie pas de référence pour cela). La raison est que la clause SELECT est logiquement traitée après la clause GROUP BY, donc au moment où le GROUP BY est fait, les alias n'existent pas encore.

Peut-être que cet exemple quelque peu ridicule aide à clarifier le problème et l'ambiguïté que SQL évite :

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