Benutzer mit den meisten Antworten
SQL-Befehl für „den ersten Datensatz von…“ unser MS-SQL 2008

Frage
-
Hallo,
ich habe den SQL-Server2008 im Einsatz und möchte mir eine Auswertung der aktuellsten Datensätze anzeigen lassen. Wenn ich die Artikel im Internet richtig verstanden habe, gibt es hier unter MS-SQL 2014 einen Befehl. Nur ich habe MS-SQL 2008. Ich hoffe das beigefügte Beispiel zeigt deutlicher was mein Ziel ist:
Wer hat einen Tipp für mich, denn ein Update ist aktuell leider ausgeschlossen.
Danke
Antworten
-
Hallo! Ich weiß jetzt nicht, an was Du bei SQL Server 2014 denkst, aber bereits ab SQL Server 2005 sollte das hier funktionieren:
Declare @tab as Table(Nachname varchar(20), Uhrzeit datetime, Value int); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:42', 3); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:41', 2); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:40', 1); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:30:57', 1); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:30:08', 2); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:29:06', 3); With NumberedRows as ( Select Nachname, Uhrzeit, Value, ROW_NUMBER() OVER(PARTITION BY Nachname ORDER BY Uhrzeit desc) as rn from @tab ) Select Nachname, Uhrzeit, Value from NumberedRows where rn = 1 order by Nachname;
Mehr Beispiele zu den Window Functions findest Du u. a. in meinem blog:
http://www.insidesql.org/blogs/cmu/tag/window+functions:
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 30. Mai 2014 07:26
- Als Antwort markiert sbrand Freitag, 30. Mai 2014 20:13
Alle Antworten
-
Hallo! Ich weiß jetzt nicht, an was Du bei SQL Server 2014 denkst, aber bereits ab SQL Server 2005 sollte das hier funktionieren:
Declare @tab as Table(Nachname varchar(20), Uhrzeit datetime, Value int); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:42', 3); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:41', 2); Insert into @tab(Nachname, Uhrzeit, Value) values('Mustermann', '20140529 20:40', 1); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:30:57', 1); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:30:08', 2); Insert into @tab(Nachname, Uhrzeit, Value) values('Huber', '20140529 20:29:06', 3); With NumberedRows as ( Select Nachname, Uhrzeit, Value, ROW_NUMBER() OVER(PARTITION BY Nachname ORDER BY Uhrzeit desc) as rn from @tab ) Select Nachname, Uhrzeit, Value from NumberedRows where rn = 1 order by Nachname;
Mehr Beispiele zu den Window Functions findest Du u. a. in meinem blog:
http://www.insidesql.org/blogs/cmu/tag/window+functions:
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 30. Mai 2014 07:26
- Als Antwort markiert sbrand Freitag, 30. Mai 2014 20:13
-
Hallo,
zunächst Danke für die Rückmeldung und für die SUPER Hilfestellung, denn das ist das was ich brauche.
Bezüglich meiner Aussage "....gibt es hier unter MS-SQL 2014 einen Befehl...." muss ich mich entschuldigen. Ich habe so lange und vertieft gesucht, dass ich nicht mal gemerkt habe, dass ich mit dem Access-SQL-Editor gearbeitet habe. Unter Access gibt es den Befehl:
ORDER BY [t-Tabelle].Nachname, First([t-Tabelle].Uhrzeit) DESC;
Danke