집 >데이터 베이스 >MySQL 튜토리얼 >SQL Unpivoting은 어떻게 넓은 표 형식의 데이터를 긴 형식으로 변환할 수 있습니까?
피벗 해제: 관계형 데이터 재구성
학생 이름(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
, Science
및 English
열을 가져와 단일 Subject
열로 변환합니다. 해당 점수는 Marks
열에 포함됩니다. 결과는 원하는 긴 형식입니다.
실시간 데모를 보려면 다음 SQL Fiddle을 확인하세요.
위 내용은 SQL Unpivoting은 어떻게 넓은 표 형식의 데이터를 긴 형식으로 변환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!