Oracle에서는 피봇() 함수를 사용하여 가로 테이블을 세로 테이블로 변환할 수 있습니다. 이 함수는 행을 열로 변환하는 데 사용됩니다. 구문은 "SELECT * FROM(데이터 쿼리 세트) PIVOT(SUM(행) to 열) 행 대 열이 되어야 하는 열의 값)(변환된 열의 값))"입니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
Oracle 행-열 변환은 특정 필드의 값을 고유 값으로 사용한 다음 다른 필드의 행 값을 해당 열 값으로 변환하는 것입니다. 여기서는 여전히 우리 시스템의 학생 점수 테이블을 예로 사용합니다. 점수 테이블 기록(행)은 각 과목의 각 학생의 점수에 해당합니다. 그런 다음 각 학생의 모든 과목을 하나로 표시하는 보고서를 만들어야 합니다. 열입니다. 사례 데이터는 다음과 같습니다.
그렇다면 어떻게 달성할 수 있을까요? 몇 가지 방법을 하나씩 설명하겠습니다.
1 먼저 Oracle 그룹화(그룹별)를 사용할 수 있어야 한다고 생각해야 합니다. 구현 코드는 다음과 같습니다.
select c.stuname, --利用分组聚合函数 sum(decode(b.coursename, '英语(2018上学期)', t.score, 0)) as "英语(2018上学期)", sum(decode(b.coursename, '数学(2018上学期)', t.score, 0)) as "英语(2018上学期)", sum(decode(b.coursename, '语文(2018上学期)', t.score, 0)) as "英语(2018上学期)" from STUDENT.SCORE t, student.course b, student.stuinfo c where t.courseid = b.courseid and t.stuid = c.stuid group by c.stuname
학생을 그룹화하기 위해 그룹별을 사용합니다. , 그리고 디코드를 사용하여 해당 과목의 성적 값을 변환한 다음 이를 합산하여 성적의 결과 값을 얻습니다.
2. -이 행 대 열 요구 사항을 완벽하게 해결할 수 있는 함수 PIVOT에서 구체적인 구문 구조는 다음과 같습니다.
SELECT * FROM (数据查询集) PIVOT ( SUM(Score/*行转列后 列的值*/) FOR coursename/*需要行转列的列*/ IN (转换后列的值) )
구체적인 코드는 다음과 같습니다.
select * from (select c.stuname, b.coursename, t.score from STUDENT.SCORE t, student.course b, student.stuinfo c where t.courseid = b.courseid and t.stuid = c.stuid ) /*数据源*/ PIVOT ( SUM(score/*行转列后 列的值*/) FOR coursename/*需要行转列的列*/ IN ('英语(2018上学期)' as 英语,'数学(2018上学期)' as 数学,'语文(2018上学期)' as 语文 ) ) ;
결과는 다음과 같습니다.
추천 튜토리얼 : "Oracle 비디오 튜토리얼"
위 내용은 Oracle 가로 테이블을 세로 테이블로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!