SQL 查询 - 如果日期早于 30 天,则将 NULL 替换为文本

SQL Query - Replace NULL with Text IF Date Older than 30 days

版本:SQL Server 2008 R2

我目前收到如下输出:

f_ID     f_lastonline         f_reasonforoffline
===============================================================
1        01/01/2015 12:00:00  ISP Down
2        02/02/2015 12:00:00  Hardware Failure
3        03/03/2015 12:00:00  NULL
4        04/23/2015 12:00:00  NULL

默认情况下,我可以使用

将 NULL 值替换为我选择的字符串
SELECT
  f_ID,
  f_lastonline,
  ISNULL(f_reasonforoffline, 'Likely Turned Off') AS f_reasonforoffline

此查询语法将 return 输出如下所示:

f_ID     f_lastonline         f_reasonforoffline
===============================================================
1        01/01/2015 12:00:00  ISP Down
2        02/02/2015 12:00:00  Hardware Failure
3        03/03/2015 12:00:00  Likely Turned Off
4        04/23/2015 12:00:00  Likely Turned Off

但是,如果 'f_lastonline' 日期早于 30 天,我只想将文本更改为 'Likely Turned Off'。

用代码来解释(但请注意,这在语法上是不正确的),这就是我希望完成的:

ISNULL(IF f_lastonline <= DATEADD(dd,DATEDIFF(dd,0,GETDATE()),-30) THEN f_reasonforoffline, 'Likely Turned Off' ELSE f_reasonforoffline, '') AS f_reasonforoffline,

然后,最终所需的输出将是以下内容,其中 2015 年 3 月 3 日(超过 30 天)的 NULL 'f_reasonforoffline' 将更改为 'Likely Turned Off' 并且 NULL 'f_reasonforoffline' 2015 年 4 月 23 日的值将简单地更改为“”(不为空,只是空白)。

f_ID     f_lastonline         f_reasonforoffline
===============================================================
1        01/01/2015 12:00:00  ISP Down
2        02/02/2015 12:00:00  Hardware Failure
3        03/03/2015 12:00:00  Likely Turned Off
4        04/23/2015 12:00:00  

*注意:这样做的原因是我不必再向查看报告的人解释 "NULL" 的含义。

提前致谢, 蜜蜂

SELECT
  f_ID,
  f_lastonline,
  CASE 
    WHEN f_lastonline < DATEADD(DD,-30,GETDATE()) 
    THEN ISNULL(f_reasonforoffline, 'Likely Turned Off') 
    ELSE f_reasonforoffline 
  END AS f_reasonforoffline