ath 0 Geschrieben 9. Dezember 2021 Melden Teilen Geschrieben 9. Dezember 2021 Hallo, ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht und brauche einen Schubs in die richtige Richtung. Ich habe eine einfache Tabelle in der Form: CREATE TABLE [dbo].[Test]( [PersNummer] [char](6) NULL, [Stand] [datetime] NULL, [Wert] [nchar](10) NULL ) ON [PRIMARY In dieser Tabelle stehen bspw. folgende Sätze: INSERT INTO [dbo].[Test] VALUES ('4711', '2019-09-01 00:00:00.000', '18'); INSERT INTO [dbo].[Test] VALUES ('4712', '2019-08-01 00:00:00.000', '51') INSERT INTO [dbo].[Test] VALUES ('4711', '2021-10-01 00:00:00.000', '81') INSERT INTO [dbo].[Test] VALUES ('4711', '2021-12-01 00:00:00.000', '151') INSERT INTO [dbo].[Test] VALUES ('4712', '2020-06-01 00:00:00.000', '60') Nun möchte ich die je Personalnummer das Feld Wert für den aktuellsten Stand updaten. Die Selektion an sich würde so gelingen: SELECT T.* FROM Test as T inner join (select x.PersNummer, max(x.stand) as MaxDatum from test as X group by x.PersNummer) as y on t.PersNummer = y.PersNummer and t.stand = y.MaxDatum und als Ergebnis PersNummer Stand Wert 4712 2020-06-01 00:00:00.000 60 4711 2021-12-01 00:00:00.000 151 In diesen Sätze soll der Wert von 60 bzw. 151 durch 100 ersetzt werden. Irgendeine Idee? Danke und Gruß Andreas Zitieren Link zu diesem Kommentar
Beste Lösung MDD 12 Geschrieben 9. Dezember 2021 Beste Lösung Melden Teilen Geschrieben 9. Dezember 2021 Im Prinzip ist es die selbe Lösung wie deine Abfrage update test set wert = 100 from test join ( select max(stand) as maxDat, persnummer as persnr from test group by persnummer ) as x on x.persnr = test.PersNummer and test.stand = maxDat 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.