如果“ GROUP BY”字段中的任何数据元素为NULL,如何返回NULL?

时间:2019-05-18 13:45:28

标签: sql ms-access

我有多个任务按“ PR”和“ Gate”分组,具有开始和完成日期。我希望查询查找最早的开始日期和最晚的完成日期。如果在完成日期中存在任何NULL(意味着并非该门(一组任务)的所有任务都已完成),则它应在完成日期中返回NULL。

data

我尝试过:

SELECT PR, Gate, MIN(T_Start) AS Start_Date, MAX(T_Complete) AS  
Completion_Date 
FROM qry_Tasks_Extended
GROUP BY PR, Gate;

无论是否存在NULL,这都会导致Completion_Date字段具有最新的现有日期。

Desired

提前谢谢!!!!

1 个答案:

答案 0 :(得分:2)

使用iif()表达式:

SELECT PR, Gate, MIN(T_Start) AS Start_Date,
       IIF(COUNT(*) = COUNT(T_COMPLETE), 
           MAX(T_Complete),
           NULL
          ) AS Completion_Date 
FROM qry_Tasks_Extended
GROUP BY PR, Gate;

在任何其他数据库中,您将使用标准的case表达式(MS Access不支持):

SELECT PR, Gate, MIN(T_Start) AS Start_Date,
       (CASE WHEN COUNT(*) = COUNT(T_COMPLETE) THEN MAX(T_Complete)
        END) AS Completion_Date 
FROM qry_Tasks_Extended
GROUP BY PR, Gate;