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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

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

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

   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;