获取特定类型的最新记录

时间:2015-03-01 16:32:19

标签: sql database ms-access

我正在构建一个用于存储测量值的访问数据库,并希望能够从我使用查询测量的所有位置检索最后一个测量值,但我无法弄清楚如何进行测量。我试过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"返回一条记录。值。

非常感谢任何帮助

2 个答案:

答案 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;