2012-11-22 22 views
1

我有以下SQL語句:SQL動態列重用

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

我想重用在DateAdd計算,而不重新評估DateAddExpired列。實際上,查詢比這個簡單的dateAdd複雜得多。

我得到的錯誤是:

無效的列名稱MyNewDate「。

如何重新使用動態列?

回答

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

+1我之前完成。 –

+0

問題是,然後我從主選擇失去MyNewDate。 –

+0

不,你不知道。我更新了我的答案。你有你的subSelect – Marc

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