반응형
Oracle에서 행을 열로 변환하는 방법
이 양식의 표가 있습니다(부분 보기일 뿐이며 표에는 100개 이상의 열이 있습니다).
LOAN NUMBER DOCUMENT_TYPE DOCUMENT_ID
992452533663 Voters ID XPD0355636
992452533663 Pan card CHXPS5522D
992452533663 Drivers licence DL-0420110141769
대출번호 하나에 대해서는 세 가지 서류를 증거로 가지고 있습니다.이러한 세부 정보를 열로 변환하여 다음과 같은 모양으로 만듭니다.
LOAN NUMBER VOTERS_ID PAN_CARD DRIVERS LICENCE
992452533663 XPD0355636 CHXPS5522D DL-0420110141769
어떻게 하는 거지?
Oracle 10g을 사용하는 경우에는DECODE
행을 열로 피벗하는 기능:
CREATE TABLE doc_tab (
loan_number VARCHAR2(20),
document_type VARCHAR2(20),
document_id VARCHAR2(20)
);
INSERT INTO doc_tab VALUES('992452533663', 'Voters ID', 'XPD0355636');
INSERT INTO doc_tab VALUES('992452533663', 'Pan card', 'CHXPS5522D');
INSERT INTO doc_tab VALUES('992452533663', 'Drivers licence', 'DL-0420110141769');
COMMIT;
SELECT
loan_number,
MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id,
MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card,
MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence
FROM
doc_tab
GROUP BY loan_number
ORDER BY loan_number;
출력:
대출_번호 유권자_IDPAN_카드 드라이버_라이센스------------- -------------------- -------------------- --------------------992452533663 XPD0355636 CHXPS5522D DL-0420110141769
오라클을 사용하여 동일한 작업을 수행할 수 있습니다.PIVOT
조항, 11g에 도입됨:
SELECT *
FROM doc_tab
PIVOT (
MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);
두 솔루션을 모두 사용하는 SQL 미들 예제:
피벗에 대한 자세한 내용은 여기에서 읽어 보십시오: 팀 홀의 오라클 피벗
다음과 같은 쿼리를 사용하여 이 작업을 수행할 수 있습니다.
select * from (
select LOAN_NUMBER, DOCUMENT_TYPE, DOCUMENT_ID
from my_table t
)
pivot
(
MIN(DOCUMENT_ID)
for DOCUMENT_TYPE in ('Voters ID','Pan card','Drivers licence')
)
여기 sqlfiddle.com 에 대한 데모가 있습니다.
select * FROM doc_tab
PIVOT
(
Min(document_id)
FOR document_type IN ('Voters ID','Pan card','Drivers licence')
)
outputs as this
언급URL : https://stackoverflow.com/questions/19858079/how-to-convert-rows-to-columns-in-oracle
반응형
'source' 카테고리의 다른 글
파이썬에서 파일의 MD5 체크섬을 어떻게 계산합니까? (0) | 2023.07.16 |
---|---|
조건이 있는 Mongodb 집계 조회 (0) | 2023.07.16 |
스프링 부트 JAR의 BOOT-INF 및 META-INF 디렉토리는 무엇입니까? (0) | 2023.07.06 |
시스템을 사용하여 메모리에 ZIP 아카이브 만들기IO.압축 (0) | 2023.07.06 |
루비에서 문자열을 URL 인코딩하는 방법 (0) | 2023.07.06 |