我已声明变量@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
我不想在case语句中使用@date局部变量,但想要获得相同的效果。我试过了:
CASE
WHEN MAX(DateValue)= @isnull(dt, '31/12/2009')
ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103)
END AS newdt
但收到错误。有什么想摆脱这个吗?
答案 0 :(得分:1)
好的,首先你需要使用
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
答案 1 :(得分:0)
CASE
WHEN MAX(DateValue)= isnull(dt, '31/12/2009')
ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103)
END AS newdt