다양한 속성에 대한 사용자 입력을 나타내는 데이터가 있는 테이블을 크로스탭으로 변환해야 합니다. 여기서 각 열 머리글은 속성을 나타내고 각 행에는 해당 속성에 해당하는 사용자 입력 값이 포함됩니다. 또한 customer_attribute 열의 값은 정적 레이블 대신 열 머리글로 사용해야 합니다.
원하는 크로스탭 형식을 얻으려면 PIVOT 쿼리는 다음과 같습니다.
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(CASE node_id when ', node_id, ' then entered_value else NULL END) AS user_input', node_id ) ) INTO @sql FROM trn_user_log; SET @sql = CONCAT('SELECT app_id, transaction_id, mobile_no, ', @sql, ' FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
이 쿼리는 PIVOT 연산자를 사용하여 행을 열로 변환하고 app_id, transaction_id 및 mobile_no 열.
customer_attribute 열의 값을 열 헤더로 사용하려면 위 쿼리를 약간 수정하면 됩니다.
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(CASE node_id when ', node_id, ' then entered_value else NULL END) AS ', customer_attribute ) ) INTO @sql FROM trn_user_log; SET @sql = CONCAT('SELECT app_id, transaction_id, mobile_no, ', @sql, ' FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
이 수정된 쿼리는 정적 열 헤더(user_input1, user_input2 등)를 해당 customer_attribute 값.
위 내용은 PIVOT을 사용하여 MySQL에서 동적 크로스탭 쿼리를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!