SELECT MAX (DECODE (activity_item, 110, activity_item, 0) ) t1,
MAX (DECODE (activity_item, 210, activity_item, 0) ) t2,
MAX (DECODE (activity_item, 220, activity_item, 0) ) t3,
MAX (DECODE (activity_item, 230, activity_item, 0) ) t4
FROM TB_EV_ACTIVITY
GROUP BY mem_id, idea_num
해당 mem_id 참여자와, idea_num 아이디어로 중복을 제거한뒤
decode 함수로 해당 테이블의 activity_item이 110일때만 뽑고 나머진 0 으로 나오기때문에
그중 최고치인(max) 110을 제외한 나머지 행을 중복 거른다
결국 한 사람 과 한 아이디어에 관해 (group by) 110, 210 혹은 210, 220, 230 처럼
열 데이터를 행으로 뿌려준다
아래 출처 : http://www.gurubee.net/lecture/1028
DECODE함수는 집계함수와 함께 통계 데이터를 추출할 때 많이 사용한다. 아래는 부서별로 급여합계를 조회하는 예이다
1 2 3 4 5 6 7 8 9 10 11 12 13 | -- 부서별로 급여 합계를 출력한다. SELECT deptno, NVL( SUM (DECODE(deptno, 10, sal)),0) deptno10, NVL( SUM (DECODE(deptno, 20, sal)),0) deptno20, NVL( SUM (DECODE(deptno, 30, sal)),0) deptno30, NVL( SUM (DECODE(deptno, 40, sal)),0) deptno40 FROM emp GROUP BY deptno; DEPTNO DEPTNO10 DEPTNO20 DEPTNO30 DEPTNO40 ------- --------- --------- ---------- ---------- 30 0 0 9400 0 20 0 10875 0 0 10 8750 0 0 0 |
아래 부서별 급여합계 예를 보면 일반적인 집계함수를 사용할 때는 급여 합계가 행으로 조회가 되지만, DECODE와 MAX함수를 사용하면 열로 값을 표시할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | -- 부서별로 급여 합계를 행으로 출력한다. SELECT d.deptno, NVL( SUM (e.sal),0) sal FROM emp e, dept d WHERE e.deptno(+) = d.deptno GROUP BY d.deptno; DEPTNO SAL -------- ---------- 10 8750 20 10875 30 9400 40 0 -- 부서별로 급여 합계를 열로 출력한다. SELECT MAX (NVL( SUM (DECODE(deptno, 10, sal)),0)) deptno10, MAX (NVL( SUM (DECODE(deptno, 20, sal)),0)) deptno20, MAX (NVL( SUM (DECODE(deptno, 30, sal)),0)) deptno30, MAX (NVL( SUM (DECODE(deptno, 40, sal)),0)) deptno40 FROM emp GROUP BY deptno; DEPTNO10 DEPTNO20 DEPTNO30 DEPTNO40 --------- ---------- ---------- ---------- 8750 10875 9400 0 |
'Database > Oracle' 카테고리의 다른 글
[ Listener Error ] 64bit toad for oracle ora-12514 (0) | 2016.06.11 |
---|---|
[toad] toad 특문 파라미터 값으로 넣기 (0) | 2016.02.19 |
오라클에 존재하는 Object 관리 Table (0) | 2015.08.25 |
[Trigger] Mutating Error 및 해결책 (0) | 2015.08.24 |
[권한] 오라클 함수 권한 주기 / 함수삭제하기 (0) | 2015.06.25 |