Tsql Case语句为ISNULL

Tsql Case语句为ISNULL,tsql,Tsql,我对T-SQL非常陌生,希望使用isnull简化这个查询 case when datediff(d, appdate, disdate) IS NOT NULL THEN datediff(d, appdate, disdate) ELSE Case when appdate is null THEN datediff(d,update,getdate()) when disdate IS NULL THEN datediff(d,appdate,

我对T-SQL非常陌生,希望使用isnull简化这个查询

case 
when datediff(d, appdate, disdate) IS NOT NULL THEN datediff(d, appdate, disdate) 
ELSE 
    Case 
        when appdate is null THEN datediff(d,update,getdate())
        when disdate IS NULL THEN datediff(d,appdate,getdate())
    END
END

虽然没有太多的简化,但这应该做同样的事情:

ISNULL(datediff(d, appdate, disdate) , 
    CASE WHEN appdate IS NULL THEN datediff(d,update,getdate())
         WHEN disdate IS NULL THEN datediff(d,appdate,getdate()) END
) 

ISNULL
的第二个参数可以简化一点(到
datediff(DAY,IIF(appdate为NULL,[update],appdate),getdate())
)@MartinSmith我想了一下,但因为这是一个
案例,当…当…
时,而不是一个
案例,当else
时,我认为它并不完全相同,因此我不应该在这种情况下使用
IIF
。@ZoharPeled非常感谢你的想法。我使用了它,并且能够将它缩小到:isnull(datediff(d,appdate,disdate),isnull(datediff(d,appdate,getdate()),datediff(d,update,getdate()))@MartinSmith我没有考虑使用IIF来实现这一点。这完全有道理。谢谢。可能重复:提示:MSDN博客上有关于
COALESCE
ISNULL
的好信息。