SQL动态列重用

时间:2012-11-22 14:39:37

标签: sql

我有以下SQL语句:

Select 
   DateAdd(month, 1, DateField) as MyNewDate, 
   CASE WHEN MyNewDate < GetDate() THEN 0 ELSE 1 END as Expired
End 

我想重新使用DateAdd中的计算而不重新评估DateAdd列的Expired。实际上,查询比这个简单的dateAdd复杂得多。

我得到的错误是:

  

列名称'MyNewDate'无效。

如何重用动态列?

2 个答案:

答案 0 :(得分:3)

您不能在同一查询中使用别名。

你需要这样的东西

SELECT MyNewDate, CASE WHEN MyNewDate < GetDate() THEN 0 ELSE 1 END as Expired
FROM
(
    Select DateAdd(month, 1, DateField) as MyNewDate...
) 

或重新输入

Select 
   DateAdd(month, 1, DateField) as MyNewDate, 
   CASE WHEN DateAdd(month, 1, DateField) < GetDate() THEN 0 ELSE 1 END as Expired
End 

答案 1 :(得分:0)

SELECT MyNewDate,
   CASE WHEN MyNewDate < GetDate() THEN 0 ELSE 1 END as Expired
(
Select 
   DateAdd(month, 1, DateField) as MyNewDate
FROM tab 
)