sql >> Database >  >> RDS >> Oracle

Waarom staat Oracle SQL niet toe dat we kolomaliassen gebruiken in GROUP BY-clausules?

Het is niet alleen Oracle SQL, ik geloof zelfs dat het voldoet aan de ANSI SQL-standaard (hoewel ik daar geen referentie voor heb). De reden is dat de SELECT-component logisch wordt verwerkt na de GROUP BY-clausule, dus op het moment dat de GROUP BY wordt uitgevoerd, bestaan ​​de aliassen nog niet.

Misschien helpt dit ietwat belachelijke voorbeeld het probleem en de dubbelzinnigheid die SQL vermijdt te verduidelijken:

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


  1. installatie van postgres de initialisatie van het databasecluster is mislukt ( Postgresql versie 9.4.4 )

  2. Door MySQL opgestelde verklaringen

  3. Aanhoudende UUID in PostgreSQL met behulp van JPA

  4. Het laatste record in elke groep ophalen - MySQL