sql >> Databáze >  >> RDS >> Oracle

Proč nám Oracle SQL neumožňuje používat aliasy sloupců v klauzulích GROUP BY?

Není to jen Oracle SQL, ve skutečnosti věřím, že odpovídá standardu ANSI SQL (ačkoli na to nemám odkaz). Důvodem je, že klauzule SELECT je logicky zpracována po klauzuli GROUP BY, takže v době, kdy je GROUP BY hotová, aliasy ještě neexistují.

Možná tento poněkud směšný příklad pomůže objasnit problém a nejednoznačnost, které se SQL vyhýbá:

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. Spouštěče SQL Server:Spouštěče DML

  2. Představujeme běžné tabulkové výrazy v SQL Server

  3. Funkce JSON_OBJECT() v Oracle

  4. Naučte se základní analýzu dat s funkcemi okna SQL