Heim >Datenbank >MySQL-Tutorial >Wie entpivotiere ich durch Kommas getrennte Werte in mehrere Zeilen in Db2?
So konvertieren Sie durch Kommas getrennte Spalten in mehrere Zeilen in Db2
Viele Anwendungen erfordern die Speicherung von Daten in einer relationalen Tabellenstruktur Jeder Datensatz stellt eine eindeutige Entität und ihre Attribute dar. Allerdings können Daten manchmal anders strukturiert sein, beispielsweise in einem durch Kommas getrennten Format innerhalb einer einzelnen Spalte. Solche Daten in eine relationale Struktur umzuwandeln kann eine Herausforderung sein, aber Db2 bietet eine Lösung mit rekursivem SQL.
Betrachten wir ein Beispiel, in dem eine Tabelle eine Spalte mit durch Kommas getrennten Werten enthält:
Id | FK_ID | Reference ----------------------- 1 2100 GI2, GI32 2 2344 GI56
Unser Ziel ist es, diese Daten in eine Tabelle mit mehreren Zeilen umzuwandeln, wobei jede Zeile etwas anderes darstellt Referenz:
Id | FK_ID | Reference ----------------------- 1 2100 GI2 2 2100 GI32 3 2344 GI56
Die folgende rekursive SQL-Abfrage erreicht diese 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
Diese Abfrage hebt die Pivotierung auf und teilt die durch Kommas getrennten Werte iterativ in separate Zeilen auf. Das Ergebnis ist eine relationale Tabelle im gewünschten Format. Hinweis: Die Abfrage wurde nicht getestet und erfordert möglicherweise geringfügige Anpassungen.
Das obige ist der detaillierte Inhalt vonWie entpivotiere ich durch Kommas getrennte Werte in mehrere Zeilen in Db2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!