Die Erste und Letzte Zeile Mit ROW_NUMBER und PARTITION
Probe-Eingang
Name | Value | Timestamp
----- | ------- | -----------------
One | 1 | 2016-01-01 02:00
Two | 3 | 2016-01-01 03:00
One | 2 | 2016-01-02 02:00
Two | 4 | 2016-01-03 04:00
Gewünschten Ausgang
Name | Value | EarliestTimestamp | LatestTimestamp
----- | ------- | ------------------- | -----------------
One | 2 | 2016-01-01 02:00 | 2016-01-02 02:00
Two | 4 | 2016-01-01 03:00 | 2016-01-03 04:00
Versucht-Abfrage
Ich versuche, mit ROW_NUMBER()
und PARTITION BY
erhalten Sie die neuesten Name
und Value
aber ich möchte auch den frühesten und den spätesten Timestamp
Wert:
SELECT
t.Name,
t.Value,
t.????????? AS EarliestTimestamp,
t.Timestamp AS LatestTimestamp
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY TIMESTAMP DESC) AS RowNumber,
Name,
Value
Timestamp) t
WHERE t.RowNumber = 1
InformationsquelleAutor Muhammad Rehan Saeed | 2016-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann man mit Hilfe der window-Funktion
min
undmax
.Beispiel
Edit: auf der Grundlage der Kommentare
Edit: ein Weiterer Ansatz ist die Nutzung der
first_value
Fenster-Funktion, die würde beseitigen die Notwendigkeit für eine sub-query und join.value
mit der Zeit wachsen. Wenn wir das ändernvalue
von 1 bis 10 in der ersten Zeile des OPs-Beispiel - diese Abfrage ergeben sich falsche Ergebnisse.ja. was Sie wahrscheinlich verwenden wollen, ist
last_value(value) over (partition by name order by timestamp)
InformationsquelleAutor Vamsi Prabhala
Verwenden
MIN(Timestamp) OVER (PARTITION BY Name)
zusätzlich zu denROW_NUMBER()
Spalte, etwa so:InformationsquelleAutor Chitharanjan Das
Können Sie MIN und MAX Funktionen + OUTER APPLY:
Ausgabe:
InformationsquelleAutor gofr1
Wenn ich verstehen deine Frage richtig, hier ist eine option mit der
row_number
Funktion zweimal. Dann, um Sie auf der gleichen Zeile, die Sie verwenden könnenconditional aggregation
.Dieser sollte in der Nähe von:
InformationsquelleAutor sgeddes
Denke einfach.
InformationsquelleAutor NEER
Wenn ich deine Frage verstanden, verwenden Sie die
row_number()
- Funktion wie folgt:InformationsquelleAutor Aldo López