고수님 간단한 쿼리 하나 부탁드립니다. 0 2 2,156

by K-ART [SQL Query] [2023.10.31 08:59:07]


테이블

   a     01       2          0          0            5.8  

   a     02       1        100        200        5.8

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

결과   2|0|0|5.8;1|100|200|5.8

by pajama [2023.10.31 09:26:02]

오라클의 listagg를 사용한 방법입니다.

with t (col1, col2, col3, col4, col5, col6) as (
select 'a', '01', 2, 0  , 0  , 5.8 from dual union all
select 'a', '02', 1, 100, 200, 5.8 from dual
)
select listagg(col3||'|'||col4||'|'||col5||'|'||col6, ':') within group(order by col2) 
  from t
 where col1 = 'a';

 


by 마농 [2023.10.31 09:29:26]
WITH t AS
(
SELECT 'a' grp, '01' seq, 2 v1, 0 v2, 0 v3, 5.8 v4 FROM dual
UNION ALL SELECT 'a', '02', 1, 100, 200, 5.8 FROM dual
)
SELECT grp
     , LISTAGG(v1 ||'|'|| v2 ||'|'|| v3 ||'|'|| v4, ';')
       WITHIN GROUP(ORDER BY seq) x
  FROM t
 GROUP BY grp
;

 

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