我的查询根据用户ID,优先级(是/否)从表中提取记录,然后根据iif语句指定审核日期。
SELECT Roster.UserID,
EventLog.Priority,
IIf([EventLog]![Priority]=True, [EventLog]![Date], Date()-183) AS [Review Date]
FROM EventLog
INNER JOIN Roster
ON EventLog.UserID = Roster.UserID
GROUP BY Roster.UserID, EventLog.Priority,
IIf([EventLog]![Priority]=True, [EventLog]![Date], Date()-183);
由于并非每个recory都有一个优先级(Yes)指示符,因此我的查询返回那些具有(Yes)的用户的Yes和No选项。
Query Results ex.
UserID Priority Review Date
abc123 Yes 5-19-2012
abc123 No 5-22-2012
qwe456 No 5-22-2012
yip552 Yes 3-10-2012
yip552 No 5-22-2012
我如何才能让那些有一个用户ID的Yes答案返回,并保留那些不计算的NO计算?
答案 0 :(得分:2)
您应该能够使用Max或Min,根据存储的数据,单词“Yes”将是Max,但值-1将是Min:
SELECT
Roster.UserID,
Max(EventLog.Priority),
Max(IIf([EventLog]![Priority]=True, [EventLog]![Date], Date()-183)) AS [Review Date]
FROM EventLog
INNER JOIN Roster
ON EventLog.UserID = Roster.UserID
GROUP BY Roster.UserID
您应该能够为 IIf([EventLog]![Priority]=True, [EventLog]![Date], Date()-183) AS [Review Date]
选择表达式,因此不需要包含在GROUP BY中
您也可以为IIf语句选择Max。