获取特定类型的最新记录
Fetch newest record of specific type
我正在构建一个用于存储测量结果的访问数据库,并希望能够使用查询从我测量的所有位置检索最后一次测量结果,但我不知道该怎么做。我尝试使用 DISTINCT、INNER JOIN 和 Group by,但我无法弄明白。
Id Datum Tijd LuikNr Value
4 16-2-2015 1:00:00 01K0001 21
7 31-1-2015 3:00:00 01K0002 2
8 31-1-2015 5:25:00 04K0002 30
12 19-2-2015 1:03:02 01K0001 1
21 12-2-2015 9:00:00 01K0001 15
这是我的 table (Meetwaarden) 布局。我希望每个 "LuikNr" 值的记录为 return。
如有任何帮助,我们将不胜感激
我假设您想要每个 Luiknr 的最高数据和 tijd。你会用两个最大的子选择来做到这一点。这将是代码:
Select * from Meetwaarden M1
Where M1.Datum = (select Max(M2.Datum) from Meetwaarden M2
Where M2.LuikNr = M1.LuikNr)
and M1.Tijd = (select max(M3.tijd) from Meetwaarden M3
Where M3.Luiknr = M1.LuikNr
and M3.Datum = M1.Datum)
子选择(使用 M2)搜索 table 并找到 LuikNr 的最大数据。然后 M3 subselect 获取当天的最大时间。
希望这有效
没有必要经常点击 table。一个简单的查询即可为您提供唯一标识要查找的行所需的一切:
select LuikNr, Max( Datum ) as Datum
from Meetwaarden
group by LuikNr;
现在只需在 CTE 中使用它并加入它。你可以把Meetwaarden整行看完,执行计划就简单多了。
with
MostRecent( LuikNr, Datum )as(
select LuikNr, Max( Datum ) as Datum
from Meetwaarden
group by LuikNr
)
select m.*
from Meetwaarden m
join MostRecent mr
on mr.LuikNr = m.LuikNr
and mr.Datum = m.Datum;
我正在构建一个用于存储测量结果的访问数据库,并希望能够使用查询从我测量的所有位置检索最后一次测量结果,但我不知道该怎么做。我尝试使用 DISTINCT、INNER JOIN 和 Group by,但我无法弄明白。
Id Datum Tijd LuikNr Value
4 16-2-2015 1:00:00 01K0001 21
7 31-1-2015 3:00:00 01K0002 2
8 31-1-2015 5:25:00 04K0002 30
12 19-2-2015 1:03:02 01K0001 1
21 12-2-2015 9:00:00 01K0001 15
这是我的 table (Meetwaarden) 布局。我希望每个 "LuikNr" 值的记录为 return。
如有任何帮助,我们将不胜感激
我假设您想要每个 Luiknr 的最高数据和 tijd。你会用两个最大的子选择来做到这一点。这将是代码:
Select * from Meetwaarden M1
Where M1.Datum = (select Max(M2.Datum) from Meetwaarden M2
Where M2.LuikNr = M1.LuikNr)
and M1.Tijd = (select max(M3.tijd) from Meetwaarden M3
Where M3.Luiknr = M1.LuikNr
and M3.Datum = M1.Datum)
子选择(使用 M2)搜索 table 并找到 LuikNr 的最大数据。然后 M3 subselect 获取当天的最大时间。
希望这有效
没有必要经常点击 table。一个简单的查询即可为您提供唯一标识要查找的行所需的一切:
select LuikNr, Max( Datum ) as Datum
from Meetwaarden
group by LuikNr;
现在只需在 CTE 中使用它并加入它。你可以把Meetwaarden整行看完,执行计划就简单多了。
with
MostRecent( LuikNr, Datum )as(
select LuikNr, Max( Datum ) as Datum
from Meetwaarden
group by LuikNr
)
select m.*
from Meetwaarden m
join MostRecent mr
on mr.LuikNr = m.LuikNr
and mr.Datum = m.Datum;