2017-10-05 1 views
-1

So ist hier ein Fall, in dem eine der Spalte in einer Tabelle die gleichen Werte für mehrere Datensätze hat, aber die Date Spalte hat inkrementelle Werte.SQL auswählen, um den neuesten Datensatz anzuzeigen

ID| PAY_CODE| RATE | Date 
--------------------------------- 
1 | 1111 | 50 | 2017-01-01 
2 | 1111 | 50 | 2017-02-01 
3 | 1111 | 50 | 2017-03-11 
4 | 1111 | 50 | 2017-05-21 

Wie kann ich drucken nur die letzte Aufzeichnung, wenn die zuletzt eingegebenen Date unbekannt ist?

Erwartetes Ergebnis:

ID| PAY_CODE| RATE | Date 
--------------------------------- 
4 | 1111 | 50 | 2017-05-21 

Ich brauche eine SQL-Abfrage, die die Date Spalte intern vergleicht und liefert den höchsten Wert (letzter Zeitpunkt in diesem Fall) - ist das überhaupt möglich?

Antwort

2

Ich denke, das ist, was Sie wollen:

select t.* 
from t 
where t.date = (select max(t2.date) from t t2); 
+0

Th Gibt mehrere Zeilen zurück, wenn sie für das letzte Datum gebunden sind. – MT0

+0

@ MT0. . . "aber die Datumsspalte hat inkrementelle Werte." –

0
select t.* 
from (select * from table order by date desc) t 
where rownum < 2 
1

Sie die rank Fensterfunktion verwenden:

SELECT id, pay_code, rate, date 
FROM (SELECT id, pay_code, rate, date, RANK() OVER (ORDER BY data DESC) AS rk 
     FROM mytable) t 
WHERE rk = 1 
+0

Dies wird mehrere Zeilen zurückgeben, wenn sie für das späteste Datum gebunden sind; mit 'ROW_NUMBER' anstelle von' RANK' wird nur eine einzelne Zeile zurückgegeben. – MT0

+0

@ MT0 OP hat die Zeilen vom letzten Datum angefordert. Soweit ich es verstehe, ist es das beabsichtigte Verhalten, mehrere Ergebnisse zuzulassen. Wenn die Anforderung in der Tat ist, nur eine dieser Zeilen zurückzugeben, wird 'row_number' tatsächlich den Zweck erfüllen, – Mureinik

+0

Das OP hat gefragt" Wie kann ich nur den letzten Datensatz drucken ", aber unabhängig davon, was sie beabsichtigen, entweder' RANK' oder ' ROW_NUMBER' wird es lösen. – MT0

0

Ich glaube, Sie SELECT * FROM YOUR_TABLE T WHERE T.DATE = (SELECT MAX(DATE) FROM YOUR_TABLE) diese Art und Weise verwenden, sollten Sie sicherstellen, dass Sie die packen letztes Ergebnis, andere Lösungen mit TOP konnten nicht wie erwartet funktionieren

Verwandte Themen