1

次の SQL ステートメントがあります。

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

列のをDateAdd再評価せずに の計算を再利用したいと思います。実際には、クエリはこの単純な dateAdd よりもはるかに複雑です。DateAddExpired

私が得るエラーは次のとおりです。

列名 '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 に答える