首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从记录列表中选择最近的日期

从记录列表中选择最近的日期
EN

Stack Overflow用户
提问于 2021-05-11 09:32:44
回答 1查看 44关注 0票数 1

大家好,

我的问题是关于所附图片中突出显示的两行。结果来自于对两个表进行的查询。

第1-7列来自一个表,第8-13列来自另一个表。

如您所见,我有两个ID 1的条目,这是因为在第二个表中有两个与雇员693有关的记录。

我只希望每个ID记录一条,条件是第二个表中使用的结果应该是具有DateUpdated字段(小于或等于)并且最接近第7列中的transactionDate的结果。

关于我该怎么做有什么想法吗?

更新* Ok,感谢第一个建议,我的结果表现在看起来像第二张图片。我有一列列显示了这两个日期之间的差异。那么,现在如何使结果只显示每个ID的最低号行呢?

更新*

KR

克里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 09:53:50

对以下内容使用聚合查询:

代码语言:javascript
运行
复制
Min(Abs(DateDiff("d", [Transaction], [Date Updated]))) As NearestUpdateDate

按剩余的字段分组。

可能是这样的:

代码语言:javascript
运行
复制
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。然后使用这个:

代码语言:javascript
运行
复制
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的两个员工记录都有相同的两个更新日期,每个更新日期与这些更新日期相差相同,因此,您将得到两个员工记录的相同更新日期。你必须自己解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67484096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档