需要帮助弄清楚如何使用LAST函数将数据库查询范围缩小到具有特定过滤器的最新条目。
我正在使用MS Access来测试查询。
问题:我正在尝试通过一个简单的查询来过滤数据库,以将数据范围缩小到仅匹配特定WorkOrder
和Run
的项目。
代码:
SELECT *
FROM DataPoints
WHERE (((DataPoints.[WorkOrder])=[WO2]) AND ((DataPoints.[RunNumber])=6))
上面的代码效果很好。接下来,我只想从最新条目中获取数据。我相信我需要合并LAST()
函数,但不知道如何实现。
想法?我会很感激。谢谢。
。
答案 0 :(得分:2)
您可以按日期和时间字段对结果进行排序,并仅选择前1个,例如:
select top 1 t.*
from datapoints t
where t.workorder = [WO2] and t.runnumber = 6
order by t.rundate desc, t.runtime desc
答案 1 :(得分:1)
您可以使用具有NOT EXISTS
条件的相关子查询来仅过滤最新记录,例如:
SELECT dp.*
FROM DataPoints AS dp
WHERE (
((dp.[WorkOrder])=[WO2])
AND ((dp.[RunNumber])=6)
AND (
NOT EXISTS(
SELECT 1
FROM DataPoints AS dp1
WHERE (
((dp1.[WorkOrder]) = (dp.[WorkOrder]))
AND ((dp1.[RunNumber]) = (dp1.[RunNumber]))
AND ((dp1.[RunTime]) > (dp.[RunTime]))
)
)
)
)
答案 2 :(得分:1)