조건에 따라서 한컬럼에 , 구분으로 병렬 넣기.. 1 3 686

by 처니 [2017.06.23 14:07:15]


데이터가 아래와 같이 있을때

COL2 의 값중에서 조건은 0을 제외하고

COL3에  1,2,3 에 나타내고 싶어요..

도움좀 부탁드립니다.

-------------------------------

적용전

COL1  COL2 COL3

A        1

A        2

A        0

A        3

 

--------------------------------------

적용후

COL1  COL2 COL3

A        1      1,2,3

A        2      1,2,3

A        0      1,2,3

A        3      1,2,3

 

---------------------------------------------------------------------

 

by 랑에1 [2017.06.23 14:31:19]
WITH T(col1, col2) AS (
SELECT 'A', 1 FROM dual UNION ALL 
SELECT 'A', 2 FROM dual UNION ALL 
SELECT 'A', 0 FROM dual UNION ALL 
SELECT 'A', 3 FROM dual
)

SELECT col1
     , col2
     , REPLACE(LISTAGG(col2, ',') WITHIN GROUP(ORDER BY col2) OVER(PARTITION BY col1), '0,') AS col3 
FROM T

좀 구리긴 한데요. 일단 ㅎㅎ

 


by 마농 [2017.06.23 14:40:06]
SELECT col1
     , col2
     , LISTAGG(NULLIF(col2, 0), ',') WITHIN GROUP(ORDER BY col2) OVER(PARTITION BY col1) col3
  FROM t
;

 


by 처니 [2017.06.28 15:12:26]

감사합니다 많은 도움이 되었어욥~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입