집 >데이터 베이스 >MySQL 튜토리얼 >GROUP_CONCAT을 사용하여 MySQL에서 데이터를 피벗하고 동적 열 헤더를 처리하는 방법은 무엇입니까?
MySQL PIVOT/CROSSTAB QUERY
데이터 분석에서는 데이터를 세로 형식에서 가로 형식으로 변환해야 하는 경우가 많습니다. 피벗 또는 교차표로 표시됩니다. MySQL에서는 다양한 기술을 사용하여 이를 달성할 수 있습니다.
피벗 테이블 생성
질문 1: 다음 열이 포함된 테이블을 생각해 보세요. app_id, transaction_id, mobile_no, node_id, customer_attribute 및 Entered_value입니다. 작업은 app_id, transaction_id 및 mobile_no로 그룹화된 피벗 테이블을 생성하는 것입니다. 여기서 node_id의 값은 열 헤더가 되고 해당 입력_값은 셀에 표시됩니다.
답변: 이 GROUP_CONCAT 함수를 사용하여 달성할 수 있습니다:
SELECT app_id, transaction_id, mobile_no, GROUP_CONCAT(CASE WHEN node_id = 1 THEN entered_value ELSE NULL END) AS Q1, GROUP_CONCAT(CASE WHEN node_id = 2 THEN entered_value ELSE NULL END) AS Q2, GROUP_CONCAT(CASE WHEN node_id = 3 THEN entered_value ELSE NULL END) AS Q3, GROUP_CONCAT(CASE WHEN node_id = 4 THEN entered_value ELSE NULL END) AS Q4, GROUP_CONCAT(CASE WHEN node_id = 5 THEN entered_value ELSE NULL END) AS Q5 FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no;
사용 NAME_CONST
질문 2: user_input1, user_input2 등을 열 헤더로 사용하는 대신 customer_attribute에 저장된 값을 사용하고 싶습니다.
답변: 이는 NAME_CONST 함수를 사용하여 달성할 수 있지만 제공된 잘못된 인수로 인해 오류가 발생했습니다:
SELECT app_id, transaction_id, mobile_no, NAME_CONST(customer_attribute, (CASE WHEN node_id = 1 THEN entered_value ELSE NULL END)) FROM trn_user_log;
함수는 두 번째 인수에 대해 상수 값을 기대하므로 수정이 필요합니다:
SELECT app_id, transaction_id, mobile_no, CASE node_id WHEN 1 THEN NAME_CONST(customer_attribute, entered_value) ELSE NULL END AS customer_attribute FROM trn_user_log;
위 내용은 GROUP_CONCAT을 사용하여 MySQL에서 데이터를 피벗하고 동적 열 헤더를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!