我遇到了有一個故障單歷史記錄表的情況。它會保存所有針對票據執行的操作。如何編寫一個查詢,它將根據特定的票證返回第一條記錄和最後一條記錄。如何從表中的一個外鍵得到第一行和最後一行
例如在上表中我有一票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;
組合解決我的問題:) –
一個問題是可能的,如果我可以用這個捧場......因爲我要過濾它一票,然後提取兩個答案的第一個和最後一排 –