SQL引用另一列的值

时间:2012-07-03 16:15:25

标签: sql

我想知道如何引用查询中列的值,以便在具有不同列名的相邻列中使用。正如您所看到的,我只是没有看到有必要在我的代码中将下面显示的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

1 个答案:

答案 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函数。