2009-12-19 79 views
0

我已經聲明的變量@date我該如何重寫這個陳述?

SELECT @date = CASE 
     WHEN MAX(dt) IS NULL THEN '31/12/2009' 
     ELSE MAX(dt) + 1 
    END 
    FROM mytab 

的代碼段我現在用的是局部變量

CASE 
    WHEN MAX(DateValue)= @date THEN NULL 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 

我不想使用@date局部變量的情況下語句,但想要得到相同的效果。我試過:

CASE 
    WHEN MAX(DateValue)= @isnull(dt, '31/12/2009') 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 

但收到一個錯誤。任何想法擺脫這個?

回答

1

OK,首先你需要使用

ISNULL(dt, '31/12/2009') 

沒有@。其次,你需要給我們一個更完整的查詢來檢查。另外,指定您收到的錯誤。

您也可以在第二個選擇中包含原始選擇。類似這樣的:

CASE 
    WHEN MAX(DateValue)= (SELECT CASE WHEN MAX(dt) IS NULL THEN '31/12/2009' ELSE MAX(dt) + 1 END FROM mytab) 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt 
0
CASE 
    WHEN MAX(DateValue)= isnull(dt, '31/12/2009') 
    ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt