none
SQL-Befehl für „den ersten Datensatz von…“ unser MS-SQL 2008 RRS feed

  • 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

    Donnerstag, 29. Mai 2014 19:58

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
    Freitag, 30. Mai 2014 07: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
    Freitag, 30. Mai 2014 07: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

    Freitag, 30. Mai 2014 20:18