我有以下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'无效。
如何重用动态列?
答案 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
)