如何从表中获取一个外键的第一行和最后一行

Nou*_*tti 3 sql postgresql

我遇到一种情况,只有一张票证历史记录表。它保存针对票证执行的所有操作。如何编写一个查询,该查询将返回特定票证的第一条记录和最后一条记录。

在此输入图像描述

例如,在上表中,我有一张 id 78580 的票。我想根据日期列获取第一行和最后一行。

Gor*_*off 5

只需使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by ticket_id order by action_when asc) as seqnum_a,
             row_number() over (partition by ticket_id order by action_when desc) as seqnum_d
      from tickets t
     ) t
where seqnum_a = 1 or seqnum_d = 1;
Run Code Online (Sandbox Code Playgroud)