![]() |
Datenbank: SQL Server • Version: 2012 • Zugriff über: ADO
SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Hallo!
Ich habe folgendes Problem: in einer Tabelle auf dem SQL Server werden mehrere Hundert Verträge abgelegt. Bei jeder Vertragsänderung wird ein neuer Datensätz erstellt, um Anderungen später nachvollziehen zu können. Dabei ist mir ein Fehler unterlaufen: ein bestimmtes Feld (Datum) sollte bei jeder Änderung immer gleich bleiben, wird jedoch immer mit dem aktuellen Datum überschrieben. Das muss ich jetzt korrigieren. Ich muss jetzt bei jedem ersten Vertragsdatensatz ein Feld auslesen und diesen Feld bei jedem letzten Vertragsdatensatz mit dem ausgelesenen Wert aktualisieren. Wie kann ich das auf einen Schlag machen, ohne jeden Vertrag nacheinander zu ändern? Danke! |
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Wie hat man das letzter Vertragsdatensatz zu verstehen? Sind das Einträge mit einem gleichen Ordungskriterium (z.B. FK)? Per Versionsnnummer oder neuestes Datum?
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Wenn dieses Feld immer gleich bleiben soll/muss, dann musst du doch den Wert in allen nachfolgenden Sätzen ändern und nicht nur im letzten, oder?
Zeig doch mal das DDL zu der Tabelle (es reichen dabei die relevanten Felder wie ID, Datum und das Feld woran man die Historie erkennen kann) |
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Zitat:
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Zitat:
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Das war der Teil, der mir klar war, aber meine Frage bezog sich darauf, wie man zusammenhängende erkennt und wie man den letzten erkennen kann.
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Zitat:
![]() |
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Zitat:
v_nr - Vertragsnummer, bleibt bei jeder Änderung gleich v_from - Vertragsdatum, wird fälschlicherweise bei jeder Änderung aktualisiert, muss jedoch immer gleich bleiben. Zitat:
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Zitat:
SQL-Code:
SELECT v_id, v_nr, v_from
FROM vertrag WHERE (v_nr, v_id) IN ( SELECT v_nr, MIN( v_id ) FROM vertrag GROUP BY v_nr ) Zitat:
|
AW: SQL Server: Mehrere Datensätze gleichzeitig vergleichen und ändern
Kenne mich mit MSSQL nicht so aus, aber so ähnlich sollte es funktionieren
SQL-Code:
Ich setzte alle nicht nur den letzten Satz neu
update <tabelle> t set t.v_from = (select top 1 v_from from <Tabelle> where v.nr = t.v_nr order by v_id);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz