-1

我很难为每个用户返回多个值。我尝试了 Select Distinct 的变体,但无济于事。我需要我的代码只为每个用户 ID 重新调整一个值。

SELECT Roster.UserID, 
    EventLog.Type, 
    IIf([EventLog]![LogType] Like "Acc*" And [EventLog]![Action] Like "Wri*",[EventLog]![Date],Date()-183) AS [Review Date]
FROM EventLog 
INNER JOIN Roster 
    ON EventLog.UserID = Roster.UserID
GROUP BY Roster.UserID, 
    EventLog.Type, 
    IIf([EventLog]![LogType] Like "Acc*" And [EventLog]![Action] Like "Wri*",[EventLog]![Date],Date()-183)
HAVING (((EventLog.Type) Like "Att*"));

当它们满足第一个条件时,代码将从 IIf 返回两个值。我如何限制其中一个?

4

2 回答 2

0

You're getting multiple values per user because you've listed multiple fields in your GROUP BY clause:

    GROUP BY Roster.UserID, 
        EventLog.Type, 
        IIf([EventLog]![LogType] Like "Acc*" And 
[EventLog]![Action] Like "Wri*",[EventLog]![Date],Date()-183)

I'm not sure why you're grouping at all, as you're not performing any aggregate functions. Would SELECT DISTINCT work?

于 2012-11-21T15:24:34.500 回答
0

感谢反馈的人。根据 Beth 的回复并清理我的表和查询以发送 dBase 的副本,问题似乎只需添加少量代码即可自行解决。

SELECT Roster.UserID, 
EventLog.Type, 
Max(IIf(EventLog!LogType Like "Acc*" And EventLog!Action Like "Wri*",EventLog!Date,Date()-183)) AS [Review Date]
FROM EventLog 
INNER JOIN Roster 
ON EventLog.UserID = Roster.UserID
GROUP BY Roster.UserID,
EventLog.Type
HAVING (((EventLog.Type) Like "Att*"));

清理贝丝的多场工作真是太棒了!!!

于 2012-11-21T16:21:52.010 回答