我有多个任务按“ PR”和“ Gate”分组,具有开始和完成日期。我希望查询查找最早的开始日期和最晚的完成日期。如果在完成日期中存在任何NULL(意味着并非该门(一组任务)的所有任务都已完成),则它应在完成日期中返回NULL。
我尝试过:
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字段具有最新的现有日期。
提前谢谢!!!!
答案 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;