2017-02-22 49 views
2

我遇到了有一个故障单历史记录表的情况。它会保存所有针对票据执行的操作。如何编写一个查询,它将根据特定的票证返回第一条记录和最后一条记录。如何从表中的一个外键得到第一行和最后一行

enter image description here

例如在上表中我有一票ID为78580.我想的第一行,并根据日期栏最后一行。

回答

2

只需使用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; 
+0

一个问题是可能的,如果我可以用这个捧场......因为我要过滤它一票,然后提取两个答案的第一个和最后一排 –

2

使用的最小值和最大值来获得第一和最后一个日期,票ID分组。

SELECT ticket_id, min(action_when), max(action_when) 
FROM table_name 
GROUP BY ticket_id; 
+0

组合解决我的问题:) –

相关问题