1

我有以下 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”无效。

如何重用动态列?

4

2 回答 2

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 
于 2012-11-22T14:42:44.887 回答
0
SELECT MyNewDate,
   CASE WHEN MyNewDate < GetDate() THEN 0 ELSE 1 END as Expired
(
Select 
   DateAdd(month, 1, DateField) as MyNewDate
FROM tab 
)
于 2012-11-22T14:43:19.937 回答