【问题标题】:IIF function - SQL Server 2008 analogueIIF 函数 - SQL Server 2008 模拟
【发布时间】:2014-09-10 18:19:16
【问题描述】:

我为 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

这里PublishedCancelleddatetime 值。

Revenue 是一个 decimal(18,8) 值。

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

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

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

在此先感谢

【问题讨论】:

  • CASE d.Published WHEN null THEN 0 ELSE 1 END
  • @Habib 这就是我的想法,是的。但如前所述,对我来说听起来有点太冗长了。
  • 你知道IIF只是语法糖,它翻译成CASE
  • @Habib 不,我不知道 :) 所以...谢谢。

标签: sql sql-server-2008-r2


【解决方案1】:

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

另见:

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

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2014-05-15
    相关资源
    最近更新 更多