Heim >Datenbank >MySQL-Tutorial >Wie entpivotiere ich durch Kommas getrennte Spalten in DB2 mithilfe von rekursivem SQL?
Aufheben der Pivotierung von durch Kommas getrennten Spalten in DB2
Die Datenspeicherung mit durch Kommas getrennten Spalten kann eine Herausforderung darstellen. Diese Abfrage zeigt, wie solche Daten in DB2 mithilfe rekursiver SQL-Techniken transformiert werden.
Betrachten Sie die Anfangstabelle:
Id | FK_ID | Reference ----------------------- 1 2100 GI2, GI32 2 2344 GI56
Das gewünschte Ergebnis besteht darin, die durch Kommas getrennten Werte in mehrere Zeilen aufzuteilen:
Id | FK_ID | Reference ----------------------- 1 2100 GI2 2 2100 GI32 3 2344 GI56
Mit rekursivem SQL können wir dies erreichen Transformation:
WITH unpivot (lvl, id, fk_ref, reference, tail) AS ( SELECT 1, id, fk_ref, CASE WHEN LOCATE(',',reference) > 0 THEN TRIM(LEFT(reference, LOCATE(',',reference)-1)) ELSE TRIM(reference) END, CASE WHEN LOCATE(',',reference) > 0 THEN SUBSTR(reference, LOCATE(',',reference)+1) ELSE '' END FROM yourtable UNION ALL SELECT lvl + 1, id, fk_ref, CASE WHEN LOCATE(',', tail) > 0 THEN TRIM(LEFT(tail, LOCATE(',', tail)-1)) ELSE TRIM(tail) END, CASE WHEN LOCATE(',', tail) > 0 THEN SUBSTR(tail, LOCATE(',', tail)+1) ELSE '' END FROM unpivot WHERE lvl < 100 AND tail != '') SELECT id, fk_ref, reference FROM unpivot
Hinweis: Bei dieser Lösung wird davon ausgegangen, dass die Anzahl der durch Kommas getrennten Werte 99 nicht überschreitet. Durch Anpassen der Level-Bedingung können die unterstützten Werte erhöht werden.
Das obige ist der detaillierte Inhalt vonWie entpivotiere ich durch Kommas getrennte Spalten in DB2 mithilfe von rekursivem SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!