2017-02-22 80 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

組合解決我的問題:) –

相關問題