Benutzer mit den meisten Antworten
SELECT-Befehl gesucht

Frage
-
Hallo,
ich habe folgende Tabelle Test:
ID A_Nummer Ertellt Reihe
0 008 2012-02-15 14:11:50 A
1 008 2012-02-15 14:12:50 A
2 007 2012-02-15 14:13:50 A
3 007 2012-02-15 14:13:55 A
4 008 2012-02-15 14:14:30 A
5 006 2012-02-15 14:14:40 A
6 007 2012-02-15 14:14:50 AIch benötige ein SELECT, welches von jeder A_Nummer den aktuellsten Datensatz zurückgibt.
Reihe muss bei WHERE angegeben werden, da es mehrere Typen von Reihe gibt.Soll-Ergebnis:
006 2012-02-15 14:14:40 A
008 2012-02-15 14:14:30 A
007 2012-02-15 14:14:50 ADies funktioniert nicht:
SELECT DISTINCT * FROM Test
WHERE Reihe = 'A'
AND Erstellt IN
(SELECT MAX(Erstellt) from Test WHERE Reihe = 'A')
Was muss ich ändern?
Alexander
Antworten
-
Hallo Alexander, probiere mal das hier:
SELECT * FROM Test t WHERE Reihe = 'A' AND Erstellt IN (SELECT MAX(Erstellt) from Test t1 WHERE t.Reihe = t1.Reihe and t.A_Nummer = t1.A_Nummer)
Bei Dir fehlte die Verknüpfung über die A_Nummer, da Du ja zu jeder A_Nummer das Maximum willst, oder?
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort markiert AlexanderRi Mittwoch, 15. Februar 2012 15:49
Alle Antworten
-
Hallo Alexander, probiere mal das hier:
SELECT * FROM Test t WHERE Reihe = 'A' AND Erstellt IN (SELECT MAX(Erstellt) from Test t1 WHERE t.Reihe = t1.Reihe and t.A_Nummer = t1.A_Nummer)
Bei Dir fehlte die Verknüpfung über die A_Nummer, da Du ja zu jeder A_Nummer das Maximum willst, oder?
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort markiert AlexanderRi Mittwoch, 15. Februar 2012 15:49
-
Hallo Alexander!Ich würde das über eine CTE lösen:WITHTestNumeriert AS(SELECTROW_NUMBER() OVER(PARTITION BYReihe,A_NummerORDER BYErstellt DESC) AS Nr,A_nummer,Erstellt,ReiheFROMTest)SELECTA_Nummer,ErstelltFROMTestNumeriertWHEREReihe = 'A'AND Nr = 1;GrüßeThomas--Any problem in computer science can be solved with another layerof indirection. But that usually will create another problem.David Wheeler