> 데이터 베이스 > MySQL 튜토리얼 > Oracle에서 행을 열로 피벗하는 방법: DECODE와 PIVOT?

Oracle에서 행을 열로 피벗하는 방법: DECODE와 PIVOT?

Mary-Kate Olsen
풀어 주다: 2025-01-03 01:09:39
원래의
854명이 탐색했습니다.

How to Pivot Rows to Columns in Oracle: DECODE vs. PIVOT?

Oracle에서 데이터를 행에서 열로 변환하는 방법: 피벗 솔루션

Oracle 데이터베이스는 데이터를 행에서 열로 재구성하기 위한 다양한 기술(피버팅이라고 알려진 프로세스)을 제공합니다. 이러한 변환은 데이터가 좁은 형식으로 구성되어 더 넓은 보기로 표시되어야 할 때 필요합니다.

행-열 변환을 수행하기 위해 Oracle은 두 가지 방법을 제공합니다.

Oracle 10g의 DECODE 기능

이전 버전의 Oracle(10g)에서는 DECODE 기능을 사용하여 피벗을 수행할 수 있습니다. 다음 테이블 구조를 고려하십시오.

LOAN NUMBER DOCUMENT_TYPE DOCUMENT_ID
992452533663 Voters ID XPD0355636
992452533663 Pan card CHXPS5522D
992452533663 Drivers licence DL-0420110141769

이 데이터를 피벗하려면 다음과 같이 DECODE 함수를 활용할 수 있습니다.

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;
로그인 후 복사

이 쿼리는 데이터를 대출 번호별로 그룹화하고 중첩 DECODE를 사용합니다. 특정 문서 유형에 문서 ID를 할당하는 기능입니다. MAX 함수는 각 대출 문서 조합에 대해 원하는 단일 값을 반환합니다.

Oracle 11g 이상의 PIVOT 절

Oracle 11g에서는 행-열 변환을 단순화하기 위해 전용 PIVOT 절을 도입했습니다. 다음 쿼리는 그 사용법을 보여줍니다.

SELECT *
  FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);
로그인 후 복사

이 쿼리의 PIVOT 절은 변환된 결과에서 생성될 열을 명시적으로 정의합니다. 지정된 문서 유형을 기준으로 데이터를 자동으로 그룹화하고 일치하는 문서 ID를 결합합니다.

Oracle의 피벗 기술에 대한 자세한 내용은 아래 리소스를 참조하세요.

  • [Tim 피벗팅에 관한 Hall의 기사 Oracle](https://www.oracle.com/technetwork/database/oracle-magazine/oracle-11g-pivot-127859.html)
  • [두 솔루션을 비교하는 SQLFiddle 예](https://www .sqlfiddle.com/#!5/7956/2/0)

위 내용은 Oracle에서 행을 열로 피벗하는 방법: DECODE와 PIVOT?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿