【发布时间】: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
这里Published 和Cancelled 是datetime 值。
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 不,我不知道 :) 所以...谢谢。