- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
ORACLE Oracle row 를 column 으로 변환
2020.06.14 17:09
Oracle row 를 column 으로 변환
Oracle row 를 column 으로 변환
데이터는 row 로 쌓여 있고, 그 값을 화면에서 column 으로 표현을 하려고하면,
데이터를 row 그대로 java 에서 처리하려면, 여러번의 for loop 를 거쳐야하만 한다.
query 에서 row 를 column 으로 변경하면, java 에서 for loop 를 처리하지 않아도 되므로 프로그램하기가 쉽다.
== Column 이 고정적인 경우 ==
SELECT S_NAME,
MAX (COLUMN1) AS COLUMN1,
MAX (COLUMN2) AS COLUMN2,
MAX (COLUMN3) AS COLUMN3,
MAX (COLUMN4) AS COLUMN4
FROM (SELECT I_UNIT,
S_NAME,
DECODE (I_UNIT, 1, PLATFORM) AS COLUMN1,
DECODE (I_UNIT, 2, PLATFORM) AS COLUMN2,
DECODE (I_UNIT, 3, PLATFORM) AS COLUMN3,
DECODE (I_UNIT, 4, PLATFORM) AS COLUMN4
FROM ST_STATUS)
GROUP BY S_NAME
이 쿼리의 결과는
S_NAME | COLUMN1 | COLUMN2 | COLUMN3 | COLUMN4
== Column 이 가변적인 경우 ==
이 경우에는 위의 고정적인 경우처럼, DECODE 를 사용하기가 여간 귀찮은 일이아니다.
설령, DECODE 를 수십개를 사용한다고 해서 가변적인 상황에 대처하기는 그리 쉽지 않다.
가변적인 Column 정보를 구분자 (',') 를 이용해 하나의 Column 에 저장을 하고 나서 (1000,2000,15000,3000,4500,)
Java 에서 String.split 를 이용하면 Column 값이 배열로 저장이 된다.
이렇게 해서 화면에 표현을 하면 쉽게 처리할 수 있다.
이 방법을 위해서는 우선 함수를 하나 생성한다.
create or replace function join
(
p_cursor sys_refcursor,
p_del varchar2 := ','
) return varchar2
is
l_value varchar2(32767);
l_result varchar2(32767);
begin
loop
fetch p_cursor into l_value;
exit when p_cursor%notfound;
if l_result is not null then
l_result := l_result || p_del;
end if;
l_result := l_result || l_value;
end loop;
close p_cursor;
return l_result;
end join;
데이터를 조회하는 Query 작성
SELECT UNIT, JOIN (CURSOR (SELECT PLATFORM
FROM ST_STATUS B
WHERE A.UNIT = B.UNIT), ',')
AS RESULT
FROM ST_STATUS A
WHERE UNIT = 1
GROUP BY UNIT
이 쿼리의 결과는
1 | windows xp,windows vista,windows 7 2 | windows xp,windows vista 3 | windows vista,windows 7
이런 형식으로 표출 된다.
[출처] https://lancerme.tistory.com/m/21
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86723 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 79050 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95818 |

