我遇到了有一个故障单历史记录表的情况。它会保存所有针对票据执行的操作。如何编写一个查询,它将根据特定的票证返回第一条记录和最后一条记录。如何从表中的一个外键得到第一行和最后一行
例如在上表中我有一票ID为78580.我想的第一行,并根据日期栏最后一行。
我遇到了有一个故障单历史记录表的情况。它会保存所有针对票据执行的操作。如何编写一个查询,它将根据特定的票证返回第一条记录和最后一条记录。如何从表中的一个外键得到第一行和最后一行
例如在上表中我有一票ID为78580.我想的第一行,并根据日期栏最后一行。
只需使用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;
使用的最小值和最大值来获得第一和最后一个日期,票ID分组。
SELECT ticket_id, min(action_when), max(action_when)
FROM table_name
GROUP BY ticket_id;
组合解决我的问题:) –
一个问题是可能的,如果我可以用这个捧场......因为我要过滤它一票,然后提取两个答案的第一个和最后一排 –