Как вернуть NULL, если какой-либо элемент данных в поле "GROUP BY" равен NULL? - PullRequest
1 голос
/ 18 мая 2019

У меня есть несколько задач, сгруппированных по «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;

В результате появилось поле Completion_Date с самой последней существующей датой, независимо от того, есть ли NULL.

Desired

Спасибо заранее !!!!

1 Ответ

3 голосов
/ 18 мая 2019

Используйте выражение 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...