>데이터 베이스 >MySQL 튜토리얼 >SQL Unpivoting은 어떻게 넓은 표 형식의 데이터를 긴 형식으로 변환할 수 있습니까?

SQL Unpivoting은 어떻게 넓은 표 형식의 데이터를 긴 형식으로 변환할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-21 04:46:08193검색

How Can SQL Unpivoting Transform Wide Tabular Data into a Long Format?

피벗 해제: 관계형 데이터 재구성

학생 이름(StudentMarks)과 다양한 과목(Name, Maths, Science)의 점수를 저장하는 테이블 English을 상상해 보세요. 데이터는 처음에 다음과 같이 구성됩니다.

<code>Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10</code>

하지만 각 과목의 점수가 새 행에 표시되는 다른 구조가 필요한 경우에는 어떻게 해야 할까요? 원하는 결과는 다음과 같습니다.

<code>Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Raj, Maths, 30
Raj, Science, 20
Raj, English, 10</code>

여기서 SQL 언피벗이 사용됩니다. 넓은 테이블(열이 많음)을 긴 테이블(행이 많음)로 변환하는 강력한 기술입니다.

SQL 쿼리를 사용하여 이를 수행하는 방법은 다음과 같습니다.

<code class="language-sql">SELECT u.name, u.subject, u.marks
FROM student s
UNPIVOT
(
  marks
  FOR subject IN (Maths, Science, English)
) u;</code>

이 쿼리는 UNPIVOT 연산자를 사용합니다. Maths, ScienceEnglish 열을 가져와 단일 Subject 열로 변환합니다. 해당 점수는 Marks 열에 포함됩니다. 결과는 원하는 긴 형식입니다.

실시간 데모를 보려면 다음 SQL Fiddle을 확인하세요.

SQL Fiddle 예

위 내용은 SQL Unpivoting은 어떻게 넓은 표 형식의 데이터를 긴 형식으로 변환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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