일단은 프로그래머 나부랭이

오라클 listagg와 wm_concat에 대한 정리 본문

DBMS

오라클 listagg와 wm_concat에 대한 정리

하필이면 도대체가 2016. 8. 4. 11:08

1)쿼리를 짜다보면 간혹 가다가, 여러행의 데이터를 1행에 보여줘야 할 경우가 있다.

무슨말이냐면..


이름 

보유 이메일 

이거원

네이버 

이거원

다음

 


위와 같은 내용을

이름

보유 이메일

이거원

네이버,다음

 

이런식으로 보여줘야 할 때가 있다.


이때는 listagg또는 wm_concat등의 함수를 쓰면 된다.

위의 두함수는 자신이 사용하는 2)오라클 버젼에 맞춰서 사용하면 된다.


10g일 경우 : wm_concat

11g일 경우 : listagg


를 사용하는데, 함수명칭이 다른만큼, 사용방법이 다르다

(만일 서버의 오라클 버전이라도 바뀌는 경우엔... 일일이 찾아서 고쳐줘야 하는 불편함이 있다)


wm_concat의 경우

wm_concat(컬럼명) 이라고 쓰면 되지만


listagg의 경우

listagg(컬럼명, 구분기호) within group (order by 정렬기준컬럼)

이라고 써야만한다...

즉, 오라클 버젼을 함부로 바꾸면 ㅈ......


당연히 한눈에 보기에도 wm_concat이 더 간편하다.

하지만, 활용하기에는 listagg가 더 좋을것 같다.

이유는 사용자가 구분기호를 정할 수 있고, 행을 합칠때 정렬 기준까지 정할 수 있기 때문.

ex : wm_concat은 '네이버,다음'이라고 밖에 표현이 안되지만, listagg는 구분기호를 변경하여 '네이버&다음'이라고 표기할 수도 있다.


___________________________________________________________________________________________

1) 쿼리 : Query라고 쓰며, 질의어 라고도 한다. 3)DBMS에서 원하는 데이터를 찾기위한 일종의 언어(?)

2) 오라클 : Oracle라고 쓰며, 동명의 회사에서 만든 DBMS이다. 세계에서 제일 많이 사용되는 시스템으로 DB구축시 1순위로 거론된다.(비용등의 문제로 다른 DB를 쓰는 경우가 있지만)

3) DBMS : DataBase Management System의 약자로 데이터베이스를 조작 및 관리하는 시스템이다.

자세한건 링크 참고


Comments