17.10 - 例: 列の別名による順序付け - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)

列の別名で明示的に順序付けすることはできません。別名を持つ列の列位置を選択リスト内の名前で指定します。

次の基本テーブル定義があると仮定します。

   CREATE TABLE t1
    (i INTEGER,
     j INTEGER,
     k INTEGER);

このテーブルに対する以下の問合わせは、列の別名jに基づく順序付けを指定しているため失敗します。システムは、式SUM(t1.j)でなくテーブルj内の列t1として解釈します。

   SELECT t1.i, SUM(t1.j) AS j, t1.k
   FROM t1
   GROUP BY 1,3
   ORDER BY j;
   *** Failure 3504 Selected non-aggregate values must be part of the associated group.

問合わせを以下のように書き換えると、意図した順序付けの実行に成功します。

   SELECT t1.i, SUM(t1.j) AS j, t1.k
   FROM t1
   GROUP BY 1,3
   ORDER BY 2;