由于是/否,多个记录

时间:2012-11-21 19:42:54

标签: sql ms-access

我的查询根据用户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计算?

1 个答案:

答案 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。