Une table avec des données représentant les entrées utilisateur pour différents attributs doit être transformée en tableau croisé format, où chaque en-tête de colonne représente un attribut et chaque ligne contient les valeurs d'entrée utilisateur correspondantes pour cet attribut. De plus, la valeur de la colonne customer_attribute doit être utilisée comme en-têtes de colonne au lieu d'étiquettes statiques.
Pour obtenir le format Crosstab souhaité, vous pouvez utiliser un Requête PIVOT comme suit :
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;
Cette requête utilise l'opérateur PIVOT pour transformer les lignes en colonnes, regroupées par app_id, colonnes transaction_id et mobile_no.
Pour utiliser les valeurs de la colonne customer_attribute comme en-têtes de colonne, vous pouvez modifier légèrement la requête ci-dessus :
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;
Cette requête révisée remplace les en-têtes de colonnes statiques (user_input1, user_input2, etc.) par l'attribut customer_attribute correspondant. valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!