>데이터 베이스 >MySQL 튜토리얼 >행에서 열로 데이터를 피벗하는 MySQL 크로스탭 쿼리를 만드는 방법은 무엇입니까?

행에서 열로 데이터를 피벗하는 MySQL 크로스탭 쿼리를 만드는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-06 10:42:42719검색

How to Create a MySQL Crosstab Query to Pivot Data from Rows to Columns?

MySQL 피벗/크로스탭 쿼리: 향상된 표시를 위한 데이터 변환

MySQL의 크로스탭 또는 피벗 쿼리를 사용하면 일반적으로 행 중심 구조에서 다음 구조로 데이터를 변환할 수 있습니다. 열 중심으로 분석 및 프리젠테이션이 더 쉽습니다. 크로스탭 쿼리 사용 방법을 이해하기 위해 실제 예를 살펴보겠습니다.

예: 열 기반 형식으로 데이터 피벗

다음 구조의 테이블을 생각해 보세요.

app_id  transaction_id  mobile_no  node_id  customer_attribute  entered_value
100     111             9999999999  1        Q1                  2
100     111             9999999999  2        Q2                  1
100     111             9999999999  3        Q3                  4
100     111             9999999999  4        Q4                  3
100     111             9999999999  5        Q5                  2
100     222             8888888888  4        Q4                  1
100     222             8888888888  3        Q3                  2
100     222             8888888888  2        Q2                  1
100     222             8888888888  1        Q1                  3
100     222             8888888888  5        Q5                  4

이 기록을 다음에 표시하고 싶습니다. 형식:

app_id  transaction_id  mobile     Q1  Q2  Q3  Q4 | Q5
100    111             9999999999   2   1   4  3  2
100    222             8888888888   3   1   2  1  4

이를 달성하려면 크로스탭 쿼리를 활용할 수 있습니다. 그러나 초기 시도에서는 각 데이터 포인트에 대해 여러 행을 검색했는데 이는 원하는 결과가 아닙니다.

수정된 크로스탭 쿼리

다음 조정된 쿼리는 원하는 결과를 제공합니다.

SELECT app_id, transaction_id, mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no

고객 속성을 열 헤더로 사용

또한 customer_attribute 열을 열 헤더로 사용합니다. NAME_CONST 함수는 이 목적에 적합하지 않지만 원하는 결과를 얻을 수 있는 기술을 활용할 수 있습니다. 하지만 정확한 해결을 위해 원하는 결과에 대해 더 자세히 설명해 주시기 바랍니다.

위 내용은 행에서 열로 데이터를 피벗하는 MySQL 크로스탭 쿼리를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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