집 >데이터 베이스 >MySQL 튜토리얼 >행에서 열로 데이터를 피벗하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!