mowch 10 Geschrieben 8. April 2015 Melden Teilen Geschrieben 8. April 2015 Hallo,ich hab in SQL 2 Tabellen: Tabelle 1: NR NAME1 Mustermann 15 Mayr 33 Bacher20 Max Tabelle 2:NR DATUM Status 1 14:00 1 15 14:00 1 1 15:00 1 33 11:00 1 15 17:30 1 33 15:00 1 Mein Select sieht nun so ausSelect 1.Nr, 1.Name, 2.Datum, 2.Status from Tabelle1 as 1 left join Tabelle2 as 2on 1.NR = 2.NR Als ergebniss bekomme ich jetzt natürlich mehrere Einträge pro NR da es ja mehrere Datums gibt.Wie kann ich den select machen, das ich von der Tabelle 2 nur den letzten Eintrag (letztes Datum) retour bekomme?Ergebniss sollte dann so aussehen 1 15:00 115 17:30 133 15:00 120 NULL NULL DANKE Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 8. April 2015 Melden Teilen Geschrieben 8. April 2015 Evtl. mit Max(2.Datum) aggregieren und dann mit Group by gruppieren. Zitieren Link zu diesem Kommentar
mowch 10 Geschrieben 8. April 2015 Autor Melden Teilen Geschrieben 8. April 2015 mit max geht es nur wenn in Tabelle 2 die werte eindeutig sind, ich hab jetzt eine fortlaufende ID eingebaut, somit haut es hin Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 8. April 2015 Melden Teilen Geschrieben 8. April 2015 Ein SELECT NR, Max(DATUM) FROM Tabelle2 GROUP BY NR bringt zu jeder NR das letzte Datum. Aber wenn es mit Deiner Lösung tut, ist's ja auch gut :) Zitieren Link zu diesem Kommentar
flyingmeniskus 0 Geschrieben 23. April 2015 Melden Teilen Geschrieben 23. April 2015 (bearbeitet) mein Vorschlag: komplett, zum nachvollziehen: DECLARE @T1 AS TABLE(Nr INT, Name VARCHAR(50)) INSERT INTO @T1 SELECT 1,'Mustermann' INSERT INTO @T1 SELECT 15 ,'Mayr' INSERT INTO @T1 SELECT 33 ,'Bacher' INSERT INTO @T1 SELECT 20 ,'Max' DECLARE @T2 AS TABLE (Nr INT, Uhrzeit TIME, Status INT ) INSERT INTO @T2 SELECT 1,'14:00',1 INSERT INTO @T2 SELECT 15,'14:00',1 INSERT INTO @T2 SELECT 1,'15:00',1 INSERT INTO @T2 SELECT 33,'11:00',1 INSERT INTO @T2 SELECT 15,'17:30',1 INSERT INTO @T2 SELECT 33,'15:00',1 INSERT INTO @T2 SELECT 34,'19:00',1 SELECT * FROM @T1 t1 LEFT JOIN (SELECT Nr,MAX(Uhrzeit) Datum FROM @T2 GROUP BY Nr) ua ON t1.nr=ua.Nr SELECT * FROM @T1 t1 FULL JOIN (SELECT Nr,MAX(Uhrzeit) Datum FROM @T2 GROUP BY Nr) ua ON t1.nr=ua.Nr Nr Name Nr Uhrzeit1 Mustermann 1 15:00:00 15 Mayr 15 17:30:0033 Bacher 33 15:00:0020 Max NULL NULL Nr Name Nr Uhrzeit1 Mustermann 1 15:00:0015 Mayr 15 17:30:0033 Bacher 33 15:00:0020 Max NULL NULLNULL NULL 34 19:00:00 bearbeitet 23. April 2015 von flyingmeniskus Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.