首页 > 解决方案 > 如何在 SQL Server 的结果中删除返回“Null”的行

问题描述

我有一个查询,可以根据需要为我提供结果。但我不希望在最终结果中显示“Null”的行。

SELECT DISTINCT In_Time, 
    Out_Time,
    "Duration" = CASE
                    WHEN DATEDIFF (hh,In_Time, Out_Time) >= 2 
                       THEN 'Duration was GREATER than 2 hours'
                 END  
FROM 
    CASES  C 

结果显示:

In_Time 时差 期间
2021-04-01 09:05:21 2021-04-01 09:28:46 无效的
2021-04-01 09:31:37 2021-04-01 10:33:27 无效的
2021-04-01 08:56:00 2021-04-01 11:46:11 持续时间大于 2 小时
2021-04-02 12:50:00 2021-04-02 14:52:26 持续时间大于 2 小时
2021-04-02 16:10:57 2021-04-02 17:05:21 无效的

如何删除返回 null 的行并得到如下结果

预期结果 :

In_Time 时差 期间
2021-04-01 08:56:00 2021-04-01 11:46:11 持续时间大于 2 小时
2021-04-02 12:50:00 2021-04-02 14:52:26 持续时间大于 2 小时

标签: sqlsql-server-2012

解决方案


也许最简单的方法就是为此添加一个WHERE子句:

WHERE DATEDIFF (hh,In_Time, Out_Time) >= 2

在原始 SQL 中:

SELECT DISTINCT In_Time, 
        Out_Time,
        CASE
          WHEN DATEDIFF (hh,In_Time, Out_Time) >= 2 THEN 'Duration was GREATER than 2 hours'
        END AS [Duration]
  FROM  CASES C 
  WHERE DATEDIFF (hh,In_Time, Out_Time) >= 2

推荐阅读