2016-01-22 3 views
1

У меня есть следующий MS Access запрос:MS Access: запрос, чтобы добавить «Если» условие

SELECT a.* 
FROM Version_Change AS a 
RIGHT JOIN 
    (SELECT VERSION, 
      min(ChangeDate) AS minimumdate, 
      ObjectID 
    FROM Version_Change 
    GROUP BY ObjectID, 
      VERSION) AS b ON(a.VERSION = b.VERSION) 
AND (a.ChangeDate = b.minimumdate) 
AND (a.ObjectID = b.ObjectID); 

проблема в том, что колонка «ChangeDate» иногда может быть blank.So Я хотел бы мой запрос для отображения также полей, где «ChangeDate» имеет значение Null. Как я могу интегрировать это условие в свой запрос?

ответ

1

Если меняются даты, для одной версии и для объекта objectid, все NULL, то min(ChangeDate) также будет иметь значение null, и соединение не будет выполнено, потому что a.ChangeDate = NULL будет оцениваться как NULL, что не соответствует действительности.

Вы можете изменить состояние ON, как это:

ON (a.version = b.version) 
    AND 
    (
    (a.ChangeDate = b.minimumdate) 
    OR 
    (a.ChangeDate IS NULL AND b.minimumdate IS NULL) 
    ) 
    AND (a.ObjectID = b.ObjectID); 
0

Вы можете использовать старый трюк с Nz:

AND (Nz(a.ChangeDate,b.minimumdate) = b.minimumdate) 
Смежные вопросы