>  기사  >  데이터 베이스  >  Oracle 수직 테이블을 수평 테이블로 변환하는 방법

Oracle 수직 테이블을 수평 테이블로 변환하는 방법

WBOY
WBOY원래의
2022-05-24 17:29:027572검색

Oracle에서는 unpivot() 함수를 사용하여 세로 테이블을 가로 테이블로 변환할 수 있습니다. 이 함수는 행의 열 필드를 고유 값에 따라 여러 행의 데이터로 변환하는 데 사용됩니다. 구문은 "데이터 세트 unpivot((열 이름)의 사용자 정의 열 이름에 대한 열 값)에서 필드 선택"입니다.

Oracle 수직 테이블을 수평 테이블로 변환하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

Oracle 세로 테이블을 가로 테이블로 변환하는 방법

Oracle 열 변환은 행의 고유 값에 따라 행의 열 필드를 여러 행의 데이터로 변환하는 것입니다.

학생 성적표의 기본 데이터는 한 학생의 과목 성적이 하나의 기록에 해당한다는 것입니다. 그런 다음 행을 열로 변환하고 각 열(수학, 영어, 중국어)의 학생 점수에 해당하는 레코드로 변환했습니다. 그래서 이번 글에서는 이전에 변환한 학생 점수 테이블(백업 테이블 Score_copy)을 다시 열과 행으로 변환하여 원본 데이터로 변환해 보도록 하겠습니다. 사례 데이터는 다음과 같습니다.

Oracle 수직 테이블을 수평 테이블로 변환하는 방법

Oracle 수직 테이블을 수평 테이블로 변환하는 방법

그럼 컬럼 전환을 어떻게 구현하나요? 일반적으로 사용되는 두 가지 방법을 소개합니다.

1. 스플라이싱에 Union All을 사용하면 해당 열을 행 레코드로 완벽하게 변환할 수 있습니다.

select t.stuname, '英语' as coursename ,t.英语 as score  from SCORE_COPY t
union all
select t.stuname, '数学' as coursename ,t.数学 as score  from SCORE_COPY t
union all
select t.stuname, '语文' as coursename ,t.语文 as score  from SCORE_COPY t

결과는 다음과 같습니다. 2. Oracle을 자동으로 사용합니다. 열 대 행 함수 unpivot도 이 문제를 완벽하게 해결할 수 있습니다. 구체적인 구문 구조는 다음과 같습니다.

select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))

구현 코드는 다음과 같습니다. Oracle 수직 테이블을 수평 테이블로 변환하는 방법

select stuname, coursename ,score from
score_copy  t
unpivot
(score for coursename in (英语,数学,语文))

결과는 다음과 같습니다.

추천 튜토리얼: "

Oracle Video Tutorial

"Oracle 수직 테이블을 수평 테이블로 변환하는 방법

위 내용은 Oracle 수직 테이블을 수평 테이블로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.