我有以下 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”无效。
如何重用动态列?
我有以下 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”无效。
如何重用动态列?
您不能在同一查询中使用别名。
你需要这样的东西
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
SELECT MyNewDate,
CASE WHEN MyNewDate < GetDate() THEN 0 ELSE 1 END as Expired
(
Select
DateAdd(month, 1, DateField) as MyNewDate
FROM tab
)