Einträge mit gleichem Wert aufsteigend erweitern
Hallo zusammen,
ich muss diverse Excel-Files (etwa 500) in einem Verzeichnis auslesen und deren Inhalte in eine SQL-Tabelle eintragen. Dabei muss ein Feld als unique definiert werden, genau hier habe ich in den Quelldaten oftmals gleiche werte.
Als Beispiel zwei Spalten:
0811 # Datensatz 1
0812 # Datensatz 2
0813 # Datensatz 3
0813 # Datensatz 4
0813 # Datensatz 5
0814 # Datensatz 6
0814 # Datensatz 7
Als Ergebnis könnte sein:
0811 # Datensatz 1
0812 # Datensatz 2
0813.1 # Datensatz 3
0813.2 # Datensatz 4
0813.3 # Datensatz 5
0814.1 # Datensatz 6
0814.2 # Datensatz 7
Ich müsste also quasi alles einlesen und bei auftreten gleicher Werte diese numerisch erweitert hochzählen.
Wie würdet Ihr vorgehen wenn man zum Beispiel mehrere gleiche Werte hat und diese numerisch aufsteigend erweitern möchte?
Viele Grüsse,
Daniel
ich muss diverse Excel-Files (etwa 500) in einem Verzeichnis auslesen und deren Inhalte in eine SQL-Tabelle eintragen. Dabei muss ein Feld als unique definiert werden, genau hier habe ich in den Quelldaten oftmals gleiche werte.
Als Beispiel zwei Spalten:
0811 # Datensatz 1
0812 # Datensatz 2
0813 # Datensatz 3
0813 # Datensatz 4
0813 # Datensatz 5
0814 # Datensatz 6
0814 # Datensatz 7
Als Ergebnis könnte sein:
0811 # Datensatz 1
0812 # Datensatz 2
0813.1 # Datensatz 3
0813.2 # Datensatz 4
0813.3 # Datensatz 5
0814.1 # Datensatz 6
0814.2 # Datensatz 7
Ich müsste also quasi alles einlesen und bei auftreten gleicher Werte diese numerisch erweitert hochzählen.
Wie würdet Ihr vorgehen wenn man zum Beispiel mehrere gleiche Werte hat und diese numerisch aufsteigend erweitern möchte?
Viele Grüsse,
Daniel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 380163
Url: https://administrator.de/contentid/380163
Ausgedruckt am: 18.11.2024 um 01:11 Uhr
5 Kommentare
Neuester Kommentar
Ich würde das ganze auf jedenfall nach dem Import machen bzw. vielleicht noch den jeweiligen Dateinamen in eine eigene Spalte setzen aber ansonsten erstmal alles in eine Importtabelle laden.
Im Anschluss ist es leichter, eine Reihenfolge zu bestimmen z.B. mit ROW_NUMBER(), dazu müsstest du uns aber verraten um welches SQL es geht.
Zum Schluss stellt sich noch die Frage warum man eine fortlaufende, eindeutige ID braucht. Bei MSSQL tuts auch wunderbar eine UID mit newid() und fertig.
Im Anschluss ist es leichter, eine Reihenfolge zu bestimmen z.B. mit ROW_NUMBER(), dazu müsstest du uns aber verraten um welches SQL es geht.
Zum Schluss stellt sich noch die Frage warum man eine fortlaufende, eindeutige ID braucht. Bei MSSQL tuts auch wunderbar eine UID mit newid() und fertig.
Hallo Daniel,
Wenn Du ohnehin Werte veränderst, dann spar Dir die Fallunterscheidung und verändere alle Werte, egal ob sie doppelt sind oder nicht.
Du hängst einfach an jeden Wert einen hochzählende Zahl mit ausreichender Stellenanzahl, dann kannst Du Dir sicher sein, dass es anschließend keine doppelten Werte gibt ohne die Werte prüfen zu müssen.
Beispiel:
Gruß Frank
Zitat von @DanielBodensee:
Dabei muss ein Feld als unique definiert werden, genau hier habe ich in den Quelldaten oftmals gleiche Werte.
wie die Kollegen schon sagten, nimm ein neues Feld mit von der Datenbank generierten Werten für das Unique.Dabei muss ein Feld als unique definiert werden, genau hier habe ich in den Quelldaten oftmals gleiche Werte.
Zitat von @DanielBodensee:
Ich müsste also quasi alles einlesen und bei auftreten gleicher Werte diese numerisch erweitert hochzählen.
Wie würdet Ihr vorgehen wenn man zum Beispiel mehrere gleiche Werte hat und diese numerisch aufsteigend erweitern möchte?
Falls das die Lösung sein muss...Ich müsste also quasi alles einlesen und bei auftreten gleicher Werte diese numerisch erweitert hochzählen.
Wie würdet Ihr vorgehen wenn man zum Beispiel mehrere gleiche Werte hat und diese numerisch aufsteigend erweitern möchte?
Wenn Du ohnehin Werte veränderst, dann spar Dir die Fallunterscheidung und verändere alle Werte, egal ob sie doppelt sind oder nicht.
Du hängst einfach an jeden Wert einen hochzählende Zahl mit ausreichender Stellenanzahl, dann kannst Du Dir sicher sein, dass es anschließend keine doppelten Werte gibt ohne die Werte prüfen zu müssen.
Beispiel:
0811.001 # Datensatz 10812.002 # Datensatz 20813.003 # Datensatz 30813.004 # Datensatz 40813.005 # Datensatz 5...0872.999 # Datensatz 999
Gruß Frank