Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum erlaubt uns Oracle SQL nicht, Spaltenaliase in GROUP BY-Klauseln zu verwenden?

Es ist nicht nur Oracle SQL, tatsächlich glaube ich, dass es dem ANSI-SQL-Standard entspricht (obwohl ich keine Referenz dafür habe). Der Grund dafür ist, dass die SELECT-Klausel logisch nach verarbeitet wird die GROUP BY-Klausel, sodass die Aliase zum Zeitpunkt der GROUP BY-Bearbeitung noch nicht existieren.

Vielleicht hilft dieses etwas lächerliche Beispiel, das Problem und die Mehrdeutigkeit zu verdeutlichen, die SQL vermeidet:

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