SQL-包括具有最新所有权的组

问题描述 投票:0回答:1

我的数据集包括在拥有的设备上的测试,但是可以购买和转售设备,我们只希望测试与最新所有权相关联。

数据集看起来像这样:

TestID ProductID RegistrationID TestDate 00021357916020 P3K25EL141297 89D617 2019-07-22 00021357915928 P3K25EL141297 89D617 2019-07-15 00021353422334 P3K25EL141297 5PKY90 2019-05-31

我需要改进,仅包括注册89D617的测试,因为这些是拥有最新所有权的测试。我们没有提供有关所有权变更的任何参考信息,并且注册ID并未以有意义的顺序增加,因此我无法找到一种将它们分组的方法。

sql sql-server date select greatest-n-per-group
1个回答
0
投票

您似乎想要每个RegistrationID的最新行。如果是这样,一个简单的选项是使用相关子查询进行过滤;

select t.*
from mytable t
where t.testDate = (
    select max(t1.testDate) 
     from mytable t1 
     where t1.RegistrationID = t.RegistrationID
)

此查询将优先使用(RegistrationID, testDate)上的索引。

© www.soinside.com 2019 - 2024. All rights reserved.