我想知道如何引用查询中列的值,以便在具有不同列名的相邻列中使用。正如您所看到的,我只是没有看到有必要在我的代码中将下面显示的case语句放置两次。
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
答案 0 :(得分: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
如果case语句是公共转换,则另一种选择是编写自己的User Defined函数。