Heim >Datenbank >MySQL-Tutorial >Wie entpivotiere ich durch Kommas getrennte Spalten in DB2 mithilfe von rekursivem SQL?

Wie entpivotiere ich durch Kommas getrennte Spalten in DB2 mithilfe von rekursivem SQL?

DDD
DDDOriginal
2024-12-18 02:48:10155Durchsuche

How to Unpivot Comma-Separated Columns in DB2 Using Recursive 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn