私は新しい変数DATE_YEAR
を参照しようとしていますが、元のDATE_YEAR
は私のTeradataデータベースTEST
にあります。 どうすれば入手できますか? Teradataのドキュメントで何も見つかりませんでした。ソーステーブルの同じ名前の名前の変更された変数を参照してください
SELECT DATE_YEAR+1 AS DATE_YEAR, COUNT(1)
FROM TEST
WHERE DATE_YEAR = 2016 GROUP BY 1;
私は新しい変数DATE_YEAR
を参照しようとしていますが、元のDATE_YEAR
は私のTeradataデータベースTEST
にあります。 どうすれば入手できますか? Teradataのドキュメントで何も見つかりませんでした。ソーステーブルの同じ名前の名前の変更された変数を参照してください
SELECT DATE_YEAR+1 AS DATE_YEAR, COUNT(1)
FROM TEST
WHERE DATE_YEAR = 2016 GROUP BY 1;
標準SQLに基づき、SELECTリスト内の列は、WHERE/GROUP BY/HAVING/OLAP/FROM後を作成したが、前ORDER BYています。
Teradataではどこでもエイリアスを再利用できるため、&を貼り付けたりネストしたSELECTを使用したりする必要がないため、非常に便利です。しかし、いくつかの有効範囲規則があります。列名が見つからない場合にのみ、別名リストで検索されます。だから、親指の大まかなルールは次のとおりです。は、既存の列名と一致して、あなたが簡単に任意の場所でそれを使用することができますエイリアス割り当てることはありません:1 BY
SELECT DATE_YEAR+1 AS DATE_YR, COUNT(1)
FROM TEST
WHERE DATE_YR = 2016 GROUP BY 1;
ありがとう、私は推測するいくつかの呼び出しをする必要があります... – Misanjo
派生テーブルでそれをラップ:
select DATE_YEAR_ADJUSTED, count(*)
from
(
SELECT DATE_YEAR+1 AS DATE_YEAR_ADJUSTED
FROM TEST
) as dt
WHERE DATE_YEAR_ADJUSTED = 2016
GROUP BY DATE_YEAR_ADJUSTED
をGROUP BYが...わずか1年とにかくあまり意味がありません。
PS。私はTeradataを知らないが、これがうまくいくと思う。 ANSI SQL。あなただけがORDERにエイリアスを使用できるように
WHERE DATE_YEAR + 1 = 2016 GROUPを。 –
この場合、私はこれを行うことができますが、保守性のために新しい名前を使用するために、より多くのロジック( 'case when'、OLAP functions ...)を持つ他の変数があります。 – Misanjo
それからあなたは@ jarlhの答えを持っています –