2

我的查询根据用户 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 都会有一个优先级(是)指示符,我的查询为那些有(是)的用户返回是和否选项。

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

我如何让它只为那些拥有一个的 UserID 返回 Yes 答案,并为那些没有的 UserID 保留 NO 计算?

4

1 回答 1

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。

于 2012-11-21T20:17:58.793 回答