IIF 'Incorrect syntax near' 错误 SQL Server 2014

IIF 'Incorrect syntax near' error at SQL Server 2014

我正在尝试使用此脚本按月控制日期

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

SELECT
    MONTH(@controlDate),
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
    IIF(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)),'OK','No') as isOK     

但是我收到这个语法错误:

Msg 102, Level 15, State 1, Line 8 Incorrect syntax near '>'

编辑: 当我尝试 if 它正在工作:

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

if(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)))
print 'OK'
else
print 'No'

我做错了什么或者这是一个错误?

如果您 运行 使用的 SQL 服务器版本不正确,或者数据库的兼容级别设置不充分,就会发生这种情况。

检查兼容性级别:

select compatibility_level 
from sys.databases 
where name = '<database name>'

要更改兼容级别:

alter database <database-name> 
set compatibility level = 110 -- SQL Server 2012

兼容性级别列表:https://msdn.microsoft.com/en-us/library/bb510680.aspx

它应该可以正常工作。您还可以使用 CASE 表达式

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

SELECT
    MONTH(@controlDate),
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
    case when MONTH(@controlDate) > 
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)) then 'OK' else 'No' end as isOK  

我遇到了同样的问题,因为 IIF 是在 SQL Server 2012 中引入的,但我的客户使用的是 2008R2。使用 case 代替:SQL Server 2008 IIF statement does not seem enabled