获取特定类型的最新记录

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;