컴퓨터 오라클 문자열을 Group By 로 합치는 WMSYS.WM_CONCAT
2012.08.07 12:19
오라클에서 보통 CONCAT 함수는 컬럼과 컬럼을 붙일 때 쓴다.
SELECT CONCAT(col1, col2, ....) FROM 테이블
하면 결과적으로 SELECT col1 || col2 FROM 테이블 과 같은 뜻이 된다.
하나의 레코드에 있는 여러 컬럼들 혹은 표현식을 붙일 때 쓰는 셈...
그런데...
여러 행(레코드)로 나눠진 값을 붙이는 건 어떻게 할까. 이걸 SQL Query 가 아닌 Pro*C 나 Stored Procedure 에서는
변수에 값 집어넣고 Loop 돌리는 식으로 할텐데, Query 로 한 방에 안되나... 싶어 찾아봤더니...
SELECT col1, WM_CONCAT(col2) FROM 테이블 GROUP BY col1
을 하면 col2 컬럼을 col1 별로 컴마( , )를 붙여서 출력해준다. 컴마가 붙는 게 싫으면
REPLACE(WM_CONCAT(col2), ',', '_')로 하면 컴마 대신에 언더바( _ )가 붙겠지.
덕분에 백업 스크립트 생성 query 만드는데 유용하게 잘 썼다.
SELECT 'TRUNCATE TABLE '
|| table_name
|| ';'
|| CHR(13)
|| 'INSERT INTO BAK_'
|| table_name
|| CHR(13)
|| '('
|| WMSYS.WM_CONCAT(column_name)
|| ')'
|| CHR(13)
|| 'SELECT '
|| WMSYS.WM_CONCAT(column_name)
|| CHR(13)
|| 'FROM '
|| table_name
|| CHR(13)
|| 'COMMIT;'
script
FROM ALL_TAB_COLS col
WHERE col.owner = '오너'
AND col.table_name LIKE '%' || :table_name || '%'
GROUP BY table_name
;
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 | 추천 수 |
|---|---|---|---|---|---|
| 11 | Thunderbolt 3와 USB-C | RanomA | 2016.04.28 | 682 | 0 |
| 10 |
중복 단어 혹은 문장 제거하는 정규표현식
| RanomA | 2016.01.05 | 5238 | 0 |
| 9 |
오라클 SQL에서 정규분포식 구현 4 - 누적확률 함수 (소수 10째 자리까지 정밀도)
| RanomA | 2015.08.01 | 6197 | 0 |
| 8 |
오라클 SQL에서 정규분포식 구현 3 - 누적확률 함수 (소수 6째자리까지 정밀도)
| RanomA | 2015.07.28 | 2080 | 0 |
| 7 |
오라클 SQL에서 정규분포식 구현 2 - 누적확률 함수 (무식한 방법)
| RanomA | 2015.07.19 | 3703 | 0 |
| 6 |
오라클의 CONNECT BY LEVEL 에 대해서
| RanomA | 2015.07.19 | 34660 | 0 |
| 5 |
오라클 SQL에서 정규분포식 구현 1 - 확률밀도 함수
| RanomA | 2015.07.18 | 5269 | 0 |
| 4 | 엑셀 매크로에서 클립보드 비우기 | RanomA | 2014.02.27 | 6702 | 0 |
| » | 오라클 문자열을 Group By 로 합치는 WMSYS.WM_CONCAT | RanomA | 2012.08.07 | 12306 | 0 |
| 2 | 오라클의 GREATEST, LEAST 함수 [2] | RanomA | 2012.04.24 | 20755 | 0 |
| 1 |
Windows 7 의 탐색기에 휴지통 추가
| RanomA | 2011.10.10 | 2158 | 0 |






