Sql-Server-2016

如何檢查工作人員的結束日期是否為 Null 值

  • May 22, 2020

我有一個數據庫,記錄整個組織中的員工任務以及他們何時完成等,我需要確定每個員工是否在任一完成中至少有一行具有空值。

基本上 - 向我展示任何在 Finish 列中至少有一行具有空值的employee_no。

可以有多個空值,但只要有一個。

樣本數據庫:

在此處輸入圖像描述

SELECT employee_no
FROM source_table
GROUP BY employee_no
HAVING COUNT(*) = COUNT(finish)

有沒有辦法將整個表格包含在該序列中?- 克里斯

select serverproperty('ProductVersion') as [version], serverproperty('Edition') as [edition]並獲得了 Devleoper 版(64 位)的版本 13.0.5102.14 – Chris

這是 (Microsoft) SQL Server 2016 SP2。– 秋名

WITH cte AS ( SELECT Employee_No,
                    Task,
                    Start,
                    Finish, 
                    MAX(CASE WHEN Finish IS NULL 
                             THEN 1 
                             ELSE 0 
                             END) OVER (PARTITION BY employee_no) have_nulls
             FROM source_table
           )
SELECT Employee_No,
      Task,
      Start,
      Finish
FROM cte
WHERE have_nulls = 0
/* ORDER BY 1,2,3 */

引用自:https://dba.stackexchange.com/questions/267664