Duplizieren von Datensätzen aufgrund Mehrfachangaben in einer Spalte
In einer Tabelle habe ich x Spalten. In einer dieser Spalten stehen Zahlenwerte getrennt z.B. mit Semikolon.
Spalte 1, Spalte 2, Spalte 3, Spalte 4
Erwin, Meier, München, 24;86;50;12
Elli, Müller, Dortmund, 60
Fritz, Weber, Stralsund,38;10
Für die weitere temporäre wiederkehrende Weiterverarbeitung der Daten soll eine Tabelle wie folgt entstehen:
Spalte 1, Spalte 2, Spalte 3, Spalte 4
Erwin, Meier, München, 24
Erwin, Meier, München, 86
Erwin, Meier, München, 50
Erwin, Meier, München, 12
Elli, Müller, Dortmund, 60
Fritz, Weber, Stralsund, 38
Fritz, Weber, Stralsund, 10
Gibt es hierfür eine einfache Möglichkeit die man in eine Query einbauen könnte ohne das man über eine Prozedur mit Schleifen geht ?
Das ganze soll auf einen MS SQL-Server laufen (T-SQL)
Spalte 1, Spalte 2, Spalte 3, Spalte 4
Erwin, Meier, München, 24;86;50;12
Elli, Müller, Dortmund, 60
Fritz, Weber, Stralsund,38;10
Für die weitere temporäre wiederkehrende Weiterverarbeitung der Daten soll eine Tabelle wie folgt entstehen:
Spalte 1, Spalte 2, Spalte 3, Spalte 4
Erwin, Meier, München, 24
Erwin, Meier, München, 86
Erwin, Meier, München, 50
Erwin, Meier, München, 12
Elli, Müller, Dortmund, 60
Fritz, Weber, Stralsund, 38
Fritz, Weber, Stralsund, 10
Gibt es hierfür eine einfache Möglichkeit die man in eine Query einbauen könnte ohne das man über eine Prozedur mit Schleifen geht ?
Das ganze soll auf einen MS SQL-Server laufen (T-SQL)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 62814579661
Url: https://administrator.de/forum/duplizieren-von-datensaetzen-aufgrund-mehrfachangaben-in-einer-spalte-62814579661.html
Ausgedruckt am: 14.03.2025 um 12:03 Uhr
4 Kommentare
Neuester Kommentar

Guckst du
Turning a Comma Separated string into individual rows
Ab SQL-Server 2016 as simple as:

Sollte die Spalte mit den zu splittenden Werten NULL Werte haben, dann statt CROSS APPLY ein OUTER APPLY nehmen.
gruß sid
Turning a Comma Separated string into individual rows
Ab SQL-Server 2016 as simple as:
SELECT
Spalte1,Spalte2,Spalte3,cs.Value AS Spalte4
FROM
DEINE_TABELLE
CROSS APPLY
STRING_SPLIT(Spalte4,';') AS cs;

Sollte die Spalte mit den zu splittenden Werten NULL Werte haben, dann statt CROSS APPLY ein OUTER APPLY nehmen.
gruß sid

Nur so am Rande, dir fehlt erstens eine Spalte für die Gruppe in deiner Beschreibung
, zweitens kann man es hier über eine Subquery machen:
Habe hier meine obige Beispieltabelle dafür herangezogen für die Gruppe habe ich hier eine fortlaufende Zahl statt einem Buchstaben benutzt, das beschränkt die ganze Sache nicht nur auf 26 Gruppen wie bei einem einzelnen Buchstaben:
Es wird also im inneren Select erst mal nach '|' gesplittet, und danach im äußeren Select nach ';'. Die Gruppe wird dann durch die Ordinal-Spalte die die Funktion STRING_SPLIT zusammen mit der Value-Spalte zurückgibt wenn der dritte Parameter eine 1 ist, als Gruppenbezeichner genutzt. Man muss die Query von innen nach Außen lesen dann wird es verständlich wie hier vorgegangen wird.
.
Wenns das dann war, bitte
Wie kann ich einen Beitrag als gelöst markieren?
nicht vergessen!
Gruß sid.
Habe hier meine obige Beispieltabelle dafür herangezogen für die Gruppe habe ich hier eine fortlaufende Zahl statt einem Buchstaben benutzt, das beschränkt die ganze Sache nicht nur auf 26 Gruppen wie bei einem einzelnen Buchstaben:
Es wird also im inneren Select erst mal nach '|' gesplittet, und danach im äußeren Select nach ';'. Die Gruppe wird dann durch die Ordinal-Spalte die die Funktion STRING_SPLIT zusammen mit der Value-Spalte zurückgibt wenn der dritte Parameter eine 1 ist, als Gruppenbezeichner genutzt. Man muss die Query von innen nach Außen lesen dann wird es verständlich wie hier vorgegangen wird.
Das wird ganz schön komplex.
Nicht wirklich, das ist noch harmlos Wenns das dann war, bitte
Wie kann ich einen Beitrag als gelöst markieren?
nicht vergessen!
Gruß sid.