sql >> Databasteknik >  >> RDS >> Oracle

Varför tillåter inte Oracle SQL oss att använda kolumnalias i GROUP BY-satser?

Det är inte bara Oracle SQL, jag tror faktiskt att det överensstämmer med ANSI SQL-standarden (även om jag inte har en referens för det). Anledningen är att SELECT-satsen logiskt bearbetas efter GROUP BY-satsen, så vid den tidpunkt då GROUP BY görs existerar inte aliasen ännu.

Kanske detta lite löjliga exempel hjälper till att klargöra frågan och den oklarhet som SQL undviker:

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. SQL-referenstabell:Hur man skapar och skriver grundläggande frågor

  2. Cloud Vendor Deep-Dive:PostgreSQL på AWS Aurora

  3. Skript för att hitta beroenden på flera nivåer för ett paket

  4. Dela sträng efter avgränsningsposition med Oracle SQL