>데이터 베이스 >MySQL 튜토리얼 >사용자 응답을 위해 SQL에서 행을 열로 피벗하는 방법은 무엇입니까?

사용자 응답을 위해 SQL에서 행을 열로 피벗하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-05 17:01:42885검색

How to Pivot Rows into Columns in SQL for User Responses?

SQL Transpose Rows as Columns

SQL에서 행을 열로 바꾸는 것은 행 중심의 데이터로 테이블을 변환할 수 있는 기술입니다. 열 기반 데이터가 있는 테이블로 이 기술은 일반적으로 피벗팅이라고 알려져 있습니다.

특정 시나리오에는 두 개의 테이블이 있습니다.

  • 응답: 질문에 대한 사용자 응답이 포함됩니다.
  • 질문: 실제 질문이 포함되어 있습니다. 질문.

귀하의 목표는 다양한 질문에 대한 각 사용자의 응답이 행이 아닌 열로 표시되도록 "응답" 테이블을 바꾸는 것입니다.

단계별- 단계 솔루션:

원하는 전치를 달성하려면 조인과 조건부 조합을 사용할 수 있습니다. 집계:

SELECT r.user_id,
       MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
       MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
       MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
FROM responses r
JOIN questions q ON q.id = r.question_id
GROUP BY r.user_id;

설명:

  • 쿼리는 먼저 "question_id" 열의 "responses" 및 "questions" 테이블을 조인합니다. 해당 질문에 대한 각 응답.
  • 그런 다음 조건부 집계를 사용합니다. MAX() 함수는 각 사용자 및 질문 조합에 대한 최대 응답 값을 검색합니다.
  • CASE 문은 질문 ID를 확인하고 ID와 일치하면 응답 본문을 반환합니다.
  • 마지막으로 GROUP BY 절은 사용자 ID별로 결과를 그룹화하여 각 사용자의 응답이 함께 집계되도록 합니다.

예 결과:

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
-------- | ------------------ | ------------------- | -------------------
1       | Yes                 | Yes                  | No
2       | Yes                 | No                   | No

위 내용은 사용자 응답을 위해 SQL에서 행을 열로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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