IIF功能 - SQL Server 2008模拟

时间:2014-09-08 15:44:05

标签: sql sql-server-2008-r2

我为SQL Server 2012编写了这个SQL代码并在那里正常工作:

select 
    d.sp_id, 
    sum(iif(d.Published is null, 0, 1)) as Published,
    sum(iif(d.Cancelled is null, 0, 1)) as Cancelled,
    sum(iif(d.Revenue is null, 0, d.Revenue)) as Revenue
from
    [MyTable] d
group by 
    d.sp_id

此处PublishedCancelled的值为datetime

Revenuedecimal(18,8)值。

我需要将其迁移到SQL Server 2008 R2(其中IIF不可用)。

这样做的最佳方式是什么? (同时保持其逻辑为100%)。

我可以考虑使用CASE,但这对我来说听起来过于冗长。

非常感谢提前

1 个答案:

答案 0 :(得分:1)

IIF函数只是语法糖,它转换为CASE语句 在2012年之前的SQL Server版本中,请使用CASE而不是IIF

另见:

IIF(...) not a recognized built-in function