0

別の列名を持つ隣接する列で使用するために、クエリの列の値を参照する方法を知りたいです。ご覧のとおり、以下に示す case ステートメントをコードに 2 回配置する必要があるとは思えません。

select acct, name, address,
case when pterm||' '||ptermc = '0' then date(digits(matdt7)) 
    when pterm||' '||ptermc = '1 D' then curdate() 
    when pterm||' '||ptermc = '1 M' then date(digits(prevd7))+30 day
    when pterm||' '||ptermc = '3 M' then date(digits(prevd7))+90 day
    when pterm||' '||ptermc = '6 M' then date(digits(prevd7))+180 day
    when pterm||' '||ptermc = '12 M' then date(digits(prevd7))+365 day
    else null end as "Next Repricing Date",

以下のセクションでは、上記のケース セクションの値を挿入するだけにしたいと思います。

phone, value from Next Repricing Date AS "balloon date"
from my.table
4

1 に答える 1

0

同じ select ステートメントでエイリアス化された列を参照することはできません。サブクエリをそのまま使用できます

SELECT q.ColA as "Next Repricing", q.ColA as "Balloon Date" FROM
(select acct, name, address,
case when pterm||' '||ptermc = '0' then date(digits(matdt7)) 
when pterm||' '||ptermc = '1 D' then curdate() 
when pterm||' '||ptermc = '1 M' then date(digits(prevd7))+30 day
when pterm||' '||ptermc = '3 M' then date(digits(prevd7))+90 day
when pterm||' '||ptermc = '6 M' then date(digits(prevd7))+180 day
when pterm||' '||ptermc = '12 M' then date(digits(prevd7))+365 day
else null end as ColA, ...) As q

もう 1 つのオプションは、case ステートメントが一般的な変換である場合、独自のユーザー定義関数を作成することです。

于 2012-07-03T16:19:55.097 に答える