我正在构建一个用于存储测量值的访问数据库,并希望能够从我使用查询测量的所有位置检索最后一个测量值,但我无法弄清楚如何进行测量。我试过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
这是我的表(Meetwaarden)布局。我想要为每个" LuikNr"返回一条记录。值。
非常感谢任何帮助
答案 0 :(得分:0)
我假设你想要每个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)搜索表格并找到LuikNr的最大基准。然后M3子选择获得当天的最长时间。
希望这有效
答案 1 :(得分:0)
没有必要经常打桌子。一个简单的查询为您提供了唯一标识您要查找的行所需的一切:
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;