sql >> データベース >  >> RDS >> Oracle

OracleSQLでGROUPBY句で列エイリアスを使用できないのはなぜですか。

    これはOracleSQLだけではありません。実際、ANSI SQL標準に準拠していると思います(そのためのリファレンスはありませんが)。その理由は、SELECT句がに論理的に処理されるためです。 GROUP BY句であるため、GROUP BYが実行された時点では、エイリアスはまだ存在していません。

    おそらく、このややばかげた例は、SQLが回避している問題とあいまいさを明確にするのに役立ちます。

    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. Oracle SQLで指定された列を選択するのはなぜですか?

    2. SQL Server(T-SQL)でパーティションテーブルをクエリするときに、各行のパーティション番号を返す

    3. DROPよりも優れたALTER

    4. モデリングおよび正規化するときにnull値をどうするか?