Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 |
29 | 30 |
Tags
- mybatis
- SPC
- vaadin
- Spring
- MSSQL
- Android
- GIT
- table
- xPlatform
- window
- react
- IntelliJ
- JavaScript
- Kotlin
- R
- plugin
- Express
- es6
- mapreduce
- Python
- Java
- tomcat
- Sqoop
- 공정능력
- hadoop
- 보조정렬
- SQL
- NPM
- Eclipse
- SSL
Archives
- Today
- Total
DBILITY
oracle unpivot column to row (열을 행으로) 변환하기 본문
반응형
오라클에서 테스트 되었으며, 생각나는대로 작성했습니다.
오라클뿐만 아니라,요즘엔 CTE ( Common Table Expression )이 표준에 포함되어 대부분 지원하니까 다른 벤더제품에서도 응용하면 됩니다.
- 첫번째
WITH T1 ( CD , CN1 ,CN2 ,CN3 ,CN4,CN5 ) AS ( SELECT '1001','1','2','3','4','5' FROM DUAL UNION ALL SELECT '1001','6','7','8','9','10' FROM DUAL ), T2 AS ( SELECT LEVEL RN FROM DUAL CONNECT BY LEVEL <=5 ) SELECT T3.RN,DECODE(T2.RN,1,CN1,2,CN2,3,CN3,4,CN4,CN5) CV FROM ( SELECT ROWNUM AS RN, CD,CN1,CN2,CN3,CN4,CN5 FROM T1 ) T3,T2 ORDER BY T3.RN,T2.RN
- 두번째
WITH T1 ( CD , CN1 ,CN2 ,CN3 ,CN4,CN5 ) AS ( SELECT '1001','1','2','3','4','5' FROM DUAL UNION ALL SELECT '1001','6','7','8','9','10' FROM DUAL ), T2 AS ( SELECT LEVEL RN FROM DUAL CONNECT BY LEVEL <=5 ) SELECT T3.CD,T3.RN,T2.RN, SUM(DECODE(T2.RN,1,T3.CN1,2,T3.CN2,3,T3.CN3,4,T3.CN4,T3.CN5)) CV FROM ( SELECT ROWNUM AS RN, CD,CN1,CN2,CN3,CN4,CN5 FROM T1 ) T3 ,T2 GROUP BY T3.CD,T3.RN,T2.RN ORDER BY T3.CD,T3.RN,T2.RN
- 세번째 : 11G부터
WITH T1 ( CD , CN1 ,CN2 ,CN3 ,CN4,CN5 ) AS ( SELECT '1001','1','2','3','4','5' FROM DUAL UNION ALL SELECT '1001','6','7','8','9','10' FROM DUAL ) SELECT CD,CN,CV FROM T1 UNPIVOT ( CV FOR CN IN (CN1,CN2,CN3,CN4,CN5) )
반응형
'database > sql' 카테고리의 다른 글
데이터 분포에 따라 번호 배정하기 (0) | 2017.06.28 |
---|---|
oracle 입찰시 기준율을 적용 업체별 순위 표시 (0) | 2016.10.13 |
oracle 점이력 선분이력으로 만들기 (0) | 2016.10.10 |
현재시간 1초 전 구하기 (0) | 2016.10.10 |
세로를 5줄로만 표현하기 (ROW 고정) (0) | 2016.10.07 |
Comments