집 >데이터 베이스 >MySQL 튜토리얼 >동적 열 헤더를 사용하여 MySQL 데이터를 단일 행으로 피벗하는 방법은 무엇입니까?
문제 1: 단일 행에서 데이터 검색
PIVOT 함수를 사용할 수 있습니다. 데이터를 단일 행 형식으로 변환합니다. 다음 쿼리는 이를 달성하기 위한 이전 시도를 수정합니다.
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;
이 쿼리는 행을 app_id, transaction_id 및 mobile_no별로 그룹화하고 MAX 함수를 사용하여 각 node_id 열에 대해 입력된 최대 값을 검색합니다. 표시하려는 "Q" 값에 추가합니다.
문제 2: 열 값을 헤더로 사용 이름
customer_attribute 열의 값을 헤더 이름으로 사용하려면 CASE 문을 AS 키워드와 함께 사용할 수 있습니다. 수정된 쿼리는 다음과 같습니다.
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS CASE customer_attribute WHEN 'Q1' THEN entered_value END, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS CASE customer_attribute WHEN 'Q2' THEN entered_value END, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS CASE customer_attribute WHEN 'Q3' THEN entered_value END, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS CASE customer_attribute WHEN 'Q4' THEN entered_value END, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS CASE customer_attribute WHEN 'Q5' THEN entered_value END FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no;
이 쿼리에서는 MAX 함수 내에서 CASE 문을 사용하여 일치하는 customer_attribute 값을 기반으로 입력된_값을 선택합니다. AS 키워드는 일치하는 customer_attribute 값을 열 헤더로 할당합니다.
위 내용은 동적 열 헤더를 사용하여 MySQL 데이터를 단일 행으로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!