2

私のクエリは、UserID、Priority(Yes / No)に基づいてテーブルからレコードを取得し、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

あるUserIDに対してはYesの回答のみを返し、持たないUserIDについてはNOの計算を維持するにはどうすればよいですか?

4

1 に答える 1

2

保存されているデータに応じて、最大または最小を使用できるはずです。「はい」という単語は最大になりますが、値-1は最小になります。

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]ので、GROUPBYに含める必要はありません。

IIfステートメントにはMaxを選択することもできます。

于 2012-11-21T20:17:58.793 に答える