这是一个大查询的一部分。

我想做的是,如果变量@exemptionStartDate = '1900-01-01',那么只需选择所有内容,

即。 ce.ExemptionStartDate = ce.ExemptionStartDate

否则,我只想要ce.ExemptionStartDate > @exemptionStartDate所在的行

ce.ExemptionStartDate具有DateTime值

SELECT foobar
WHERE foo = bar
AND ce.ExemptionStartDate = CASE WHEN @exemptionStartDate = '1900-01-01' THEN ce.ExemptionStartDate ELSE (> @exemptionStartDate) END

可能吗?还是我需要做一些棘手的事情,使所有内容变成一个很长的字符串,并根据需要添加它?

我遇到语法错误,并且不知道如何形成这样的东西。

最佳答案

不需要使事情复杂化

if @exemptionStartDate = '1900-01-01'
set @exemptionStartDate = '1753-01-01' --lowest date for datetime

然后就是
where ce.ExemptionStartDate > @exemptionStartDate

关于sql - t-sql在case语句中将 '='更改为 '> or <',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5110743/

10-11 02:44