상세 컨텐츠

본문 제목

[Oracle] Oracle에서 listagg를 사용해보자

백앤드 개발 노트

by bydawn25 2022. 2. 28. 22:23

본문

 

 

 

 

year month date
2022 1 2
2022 1 15
2022 2 10

년도, 월, 일이 각각 세개의 column으로 나뉘어져 있는 테이블을 찾았다. 👀

보통 timestamp.. date... 있는 타입을 쓰지 않나? 생각했는데 나는 건의할 힘이 없는 힘없는 실무자.

 

 

 

 

 

원하는 결과
2022-1-2
2022-1-15
2022-2-10

시키는 대로 세개의 column에서 각각의 값을 뽑아내서 '-'(막대) 인자로 붙여내야 했다. 이전 포스팅에서 대충 사용햇던 listagg function을 사용했다.

 

 

 

 

select listagg(concat(year,concat(month,day)),'-');

listagg(적용할 값, 중간인자) function을 위와 같이 사용하면 각각 column의 값을 합쳐준다. 나는 3개의 column을 합쳐야 했으므로 concat을 두번 사용했다. 요렇고롬 위에 sql을 사용하면 원하는 인자로 이어서 select할 수 있다.

 

이 sql문을 사용하면 column의 title이 listagg...이렇게만 나오니 깔끔한 테이블을 원하면 as를 사용하면된다.

관련글 더보기