我有这个 SQL:
SELECT a.ID,
a.title,
a.section,
a.name,
l.User AS CreatedBy,
IIf(IsNull(l.Time),
Null, DateAdd ( "s", l.time, #03/01/1980# )) AS CreatedAt
FROM (
Reports AS a
LEFT JOIN AuditLog AS l ON a.ID = l.ID
)
LEFT JOIN
(SELECT TOP 1 Min([time]) AS Mintime,
URN FROM AuditLog GROUP BY ID)
AS t ON (l.time = t.mintime) AND (l.ID = t.ID)
WHERE a.Active = 'Y';
查询有效,但返回重复记录(因为 1 个报告有多个审计日志)。我只想返回一个ID
显示最早审计时间的记录(因此是什么mintime
)。我添加了,TOP 1
但这似乎并没有改变任何东西。我也考虑过GROUP BY ID
但对如何仍然显示title
等有点困惑,因为它抱怨它们不是聚合的。
电流输出:
ID title section CreatedBy CreatedAt
Z.test1 Example 1 Ex User1 01/01/2012
Z.test5 Example 5 Ex User2 02/03/2012
Z.test6 Example 6 Ex User3 03/06/2012
Z.test6 Example 6 Ex User4 02/01/2000
预期输出:
ID title section CreatedBy CreatedAt
Z.test1 Example 1 Ex User1 01/01/2012
Z.test5 Example 5 Ex User2 02/03/2012
Z.test6 Example 6 Ex User4 02/01/2000
如上所示,仅显示了 Z.test6 的最早记录,而不是所有结果。
尝试新查询:
SELECT a.ID, a.title, a.section, a.name, l.User AS CreatedBy, IIf(IsNull(l.Time), Null, DateAdd ( "s", l.time, #03/01/1980# )) AS CreatedAt
FROM (
Reports AS a
LEFT JOIN (
SELECT ID, Min([time]) AS Mintime FROM AuditLog GROUP BY ID
) AS t ON (l.ID = t.ID)
LEFT JOIN AuditLog AS l ON (a.ID = l.ID AND t.mintime = l.time)
)
WHERE a.Active = 'Y'