

大家好,
我的问题是关于所附图片中突出显示的两行。结果来自于对两个表进行的查询。
第1-7列来自一个表,第8-13列来自另一个表。
如您所见,我有两个ID 1的条目,这是因为在第二个表中有两个与雇员693有关的记录。
我只希望每个ID记录一条,条件是第二个表中使用的结果应该是具有DateUpdated字段(小于或等于)并且最接近第7列中的transactionDate的结果。
关于我该怎么做有什么想法吗?
更新* Ok,感谢第一个建议,我的结果表现在看起来像第二张图片。我有一列列显示了这两个日期之间的差异。那么,现在如何使结果只显示每个ID的最低号行呢?
更新*
KR
克里斯
发布于 2021-05-11 09:53:50
对以下内容使用聚合查询:
Min(Abs(DateDiff("d", [Transaction], [Date Updated]))) As NearestUpdateDate按剩余的字段分组。
可能是这样的:
SELECT
tblEmployee.Id,
tblEmployee.EmployeeId,
tblEmployee.Transaction,
Min(Abs(DateDiff("d",[Transaction],[Date Updated]))) AS MinDiff
FROM
tblEmployee
INNER JOIN
tblEmployeeWages ON
tblEmployee.EmployeeId = tblEmployeeWages.EmployeeId
GROUP BY
tblEmployee.Id,
tblEmployee.EmployeeId,
tblEmployee.Transaction;将其保存为qdyEmployeeDate。然后使用这个:
SELECT
tblEmployee.Id,
tblEmployee.EmployeeId,
tblEmployee.Transaction,
Min(tblEmployeeWages.[Date Updated]) AS DateUpdated
FROM
(tblEmployee
INNER JOIN
qdyEmployeeDate ON
tblEmployee.Id = qdyEmployeeDate.Id)
INNER JOIN
tblEmployeeWages ON
tblEmployee.EmployeeId = tblEmployeeWages.EmployeeId
WHERE
(tblEmployee.Transaction = DateAdd("d",[MinDiff],[Date Updated]))
OR
(tblEmployee.Transaction=DateAdd("d",-[MinDiff],[Date Updated]))
GROUP BY
tblEmployee.Id,
tblEmployee.EmployeeId,
tblEmployee.Transaction;得到:

现在您可以使用Ids和两个日期了。此查询可用于具有表的外部联接的新查询中,以检索其余字段。
请注意,693的两个员工记录都有相同的两个更新日期,每个更新日期与这些更新日期相差相同,因此,您将得到两个员工记录的相同更新日期。你必须自己解决。
https://stackoverflow.com/questions/67484096
复制相似问题