0

どのように...またはまったく同じselect-clauseとwhere-clauseで別名フィールドエイリアスを使用できますか?field as val

select
    a.LONG_NAME_I_CANT_REMEMBER as val1,
    a.NAME_I_DONT_WANT_2_REMEMBER as val2,
    val1-val2 as diff
from
    random_table a
where
    (val1 > 12)

インラインビュー/インラインクエリはありません。テーブルエイリアスに関するものではありません。

4

1 に答える 1

3

SELECT句内の句で定義したエイリアスを使用することはできませんWHERE。論理的には、返す行を決定する (句を適用する) ことは、表示する列 (リスト)WHEREを決定する前に行われるため、句が処理されるとき、エイリアスはまだ存在しません。SELECTWHERE

もちろん、クエリをリファクタリングして、インライン ビューでデータを選択してエイリアス化し、WHEREそのビューの外で句を適用することもできます。何かのようなもの

select a.*,
       val1-val2 as diff
  from (select a.LONG_NAME_I_CANT_REMEMBER as val1,
               a.NAME_I_DONT_WANT_2_REMEMBER as val2,
          from random_table a) a
 where (val1 > 12)
于 2014-09-16T06:32:28.937 に答える