집 >데이터 베이스 >MySQL 튜토리얼 >재귀 SQL을 사용하여 DB2에서 쉼표로 구분된 열의 피벗을 해제하는 방법은 무엇입니까?
DB2에서 쉼표로 구분된 열을 피벗 해제
쉼표로 구분된 열이 있는 데이터를 저장하면 문제가 발생할 수 있습니다. 이 쿼리는 재귀 SQL 기술을 사용하여 DB2에서 이러한 데이터를 변환하는 방법을 보여줍니다.
초기 테이블을 고려하세요.
Id | FK_ID | Reference ----------------------- 1 2100 GI2, GI32 2 2344 GI56
원하는 결과는 쉼표로 구분된 값을 여러 행으로 분리하는 것입니다.
Id | FK_ID | Reference ----------------------- 1 2100 GI2 2 2100 GI32 3 2344 GI56
재귀 SQL을 사용하면 이를 달성할 수 있습니다. 변환:
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
참고: 이 솔루션에서는 쉼표로 구분된 값의 수가 99를 초과하지 않는다고 가정합니다. lvl 조건을 조정하면 지원되는 값이 늘어날 수 있습니다.
위 내용은 재귀 SQL을 사용하여 DB2에서 쉼표로 구분된 열의 피벗을 해제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!