Sie werden nicht in der Lage sein, die genaue Bearbeitung mit SQL durchzuführen. Sie benötigen einen Algorithmus wie den Unix diff
auf Dateien (was auf Zeilenebene funktioniert). Auf Zeichenebene wäre der Algorithmus eine Variation der Levenshtein-Distanz
. Wenn diff
Ihren Anforderungen entspricht, können Sie es herunterladen, eine gespeicherte Prozedur schreiben, um es aufzurufen, und es dann in der Datenbank verwenden. Das wäre ziemlich teuer.
Der Teil Ihrer Frage, die verschiedenen Versionen zu pflegen, ist viel einfacher. Ich würde zwei Spalten EffDate
hinzufügen und EndDate
auf jeden Datensatz. Sie können die neueste Version abrufen, indem Sie nach EndDate is NULL
suchen und finden Sie die Version, die zu einem bestimmten Zeitpunkt aktiv ist. Merge
ist im Allgemeinen nützlich, um eine solche Tabelle zu pflegen.