| A | B | C |
|
123123 |
a, b, c | 235dwd |
| 123234 | b | 2343fdf |
안녕하세요! 다수의 값이 들어가 있는 컬럼을 분리하려 하는데 방법을 모르겠어서 질문을 드리게 됐습니다.
위의 표처럼 B컬럼에 a,b,c 값이 들어가 있는 경우가 있는데, 이것을 다른 값들은 유지한채 3개의 행으로 분리하고자 합니다.
아래의 표를 보시면 B열의 a,b,c 값이 분리됨에 따라 나머지 A열과 C열의 값은 유지된채 분리된 형태로 나누고자 하는데요,
어떻게 해야할지 도통 떠오르지 않아 질문 드립니다!!
| A | B | C |
| 123123 | a | 235dwd |
| 123123 | b | 235dwd |
| 123123 | c | 235dwd |
| 123234 | b | 2343fdf |
확인해주시면 감사하겠습니다!!
구글 찾아봤더니.
unnest / string_to_array 함수 조합하시면 될것 같네요.
조언 감사합니닷!!
WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
, SPLIT_PART(a.b, ', ', b.lv) b
, a.c
FROM t a
, GENERATE_SERIES(1, 9) b(lv)
WHERE b.lv <= LENGTH(a.b) - LENGTH(REPLACE(a.b, ',', '')) + 1
;
WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
, b.b
, a.c
FROM t a
, REGEXP_SPLIT_TO_TABLE(a.b, ', ') b(b)
;
WITH t AS
(
SELECT 123123 a, 'a, b, c' b, '235dwd' c
UNION ALL SELECT 123234, 'b', '2343fdf'
)
SELECT a.a
, b.b
, a.c
FROM t a
, UNNEST(STRING_TO_ARRAY(a.b, ', ')) b(b)
;
와!!! 빠른 답변 정말 감사합니다!!!!!!!