Sql “IFF”中的“IN”表示语法错误

Sql “IFF”中的“IN”表示语法错误,sql,tsql,Sql,Tsql,我不明白为什么这是错误的。IFF的语法定义如下: 为什么它会抱怨IN运算符?看起来您使用的SQL Server版本在SQL Server 2012之前不支持此功能。另一种方法是使用如下案例陈述: Select NEWID(), m.MALEPUNKTYPE, case when m.MALEPUNKTYPE in ('E17', 'E18') then 'D02' else null end from AMALD m 从SQL Server 2005开始支持此功能,但它也应适用

我不明白为什么这是错误的。IFF的语法定义如下:


为什么它会抱怨IN运算符?

看起来您使用的SQL Server版本在SQL Server 2012之前不支持此功能。另一种方法是使用如下案例陈述:

Select NEWID(), m.MALEPUNKTYPE, 
       case when m.MALEPUNKTYPE in ('E17', 'E18') then 'D02' else null end
from AMALD m

从SQL Server 2005开始支持此功能,但它也应适用于早期版本

什么SQL Server版本?根据文件,iif从2012年起提供!还有什么SSMS版本?从sys.objects中选择*,在'xyz'中选择iinfo.name,'bar',1,0对我来说很好。@MartinSmith,更正。非常感谢。这也适用于我,在1,2,1,0行中选择Iif1。这似乎就是问题所在。我一直在自己的测试环境中测试它,但有一位客户使用的是SQLServer2008SP3。所以它不被支持。无论是在2005年还是在2005年都不是新的。上述代码也应该适用于SQLServer2000,也可能适用于早期版本。如果您的观点是,SQL Server 2005是目前受支持的最旧版本的SQL Server,那么当旧版本不再受支持时,您必须永久编辑此问题似乎是一种设置。公平地说,我只是浏览了一下MSDN对受支持版本的看法,并注意到2005是最早的版本。我会更新答案的谢谢。这就解决了问题。我已经重写了查询。