2017-02-22 1 views
2

Ich habe eine Situation, in der es eine Ticket-History-Tabelle gibt. Es speichert alle Aktionen, die mit einem Ticket ausgeführt werden. wie man eine Abfrage schreibt, die den ersten Datensatz und den letzten Datensatz gegen ein bestimmtes Ticket zurückgibt.Wie bekomme ich die erste und letzte Zeile gegen einen Fremdschlüssel aus einer Tabelle

enter image description here

zum Beispiel in der obigen Tabelle I mit der ID ein Ticket haben 78580. Ich möchte die erste Reihe und die letzte Zeile auf Datumsspalte basiert erhalten.

Antwort

2

Nur row_number() verwenden:

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

eine weitere Frage ist es möglich, wenn ich dies ... in beitreten kann, weil ich es auf einem Ticket filtern will, und dann die erste und die letzte Zeile –

2

Verwenden min und max erste und letzte Datum zu erhalten, von Ticket-ID gruppiert.

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

Kombination beiden Antworten extrahieren mein Problem gelöst :) –

Verwandte Themen