Sql 返回多个元素最大值的整行

Sql 返回多个元素最大值的整行,sql,Sql,我有一张这样的桌子: id_this_table fk_tableX fk_tableY ts_started ts_activated ts_expired 1 1 1 2019-03-20 2019-03-21 2019-03-22 2 1 2 2019-03-23 2019-03-24

我有一张这样的桌子:

id_this_table   fk_tableX    fk_tableY    ts_started    ts_activated     ts_expired
      1             1            1        2019-03-20     2019-03-21      2019-03-22
      2             1            2        2019-03-23     2019-03-24      2019-03-25
      3             2            3        2019-03-23     2019-03-24      2019-03-26
对于多个元素,我需要通过fk_tableX获取每个元素的最新值。就像订阅一样,我需要获得每个“客户端”中最新的一个

结果应该是这样的

  id_this_table   fk_tableX    fk_tableY  ts_started    ts_activated     ts_expired
      2             1            2        2019-03-23     2019-03-24      2019-03-25
      3             2            3        2019-03-23     2019-03-24      2019-03-26
使用相关子查询

select t1.* from table_name t1
where t1.ts_expired=( select max(ts_expired) from table_name t2 where t1.fk_tableX=t2.fk_tableX)
或者,如果您的dbms支持,请使用row_number()

with cte as
(select t.*,row_number() over(partition by fk_tableX order by ts_expired desc) rn from table_name t
) select * from cte where rn=1

请不要使用不适用于您的问题的标记。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请仅添加您实际使用的数据库的标记为什么没有
fk_tableX
=2的行?很抱歉,这是一个错误typo@ScottHunter根据描述,在我看来,这似乎是打字错误,因为ts_过期是25和26,这与双一btw不相关,谢谢通知