Pivotement des données à l'aide de deux colonnes
Cette question répond à la nécessité de faire pivoter les données à partir d'un format où chaque ligne représente un utilisateur et son organisation correspondante. et position dans un format où chaque ligne contient un utilisateur et ses organisations et postes regroupés par langue.
L'exemple fourni montre que les données d'origine sont stockées dans une table où chaque ligne contient un identifiant utilisateur, une organisation, un poste et une langue. Le résultat souhaité est d'avoir un tableau où chaque ligne contient un identifiant d'utilisateur, son organisation et sa position pour chaque langue.
Pour y parvenir, une requête pivot peut être utilisée pour transformer les données. La requête fournie par l'utilisateur est un bon point de départ, mais elle nécessite des modifications supplémentaires pour obtenir le résultat souhaité.
La requête modifiée suivante devrait fonctionner :
SELECT user_id, MAX(CASE WHEN lang = 'EN' THEN org END) AS org_en, MAX(CASE WHEN lang = 'EN' THEN position END) AS position_en, MAX(CASE WHEN lang = 'FI' THEN org END) AS org_fi, MAX(CASE WHEN lang = 'FI' THEN position END) AS position_fi, MAX(CASE WHEN lang = 'SV' THEN org END) AS org_sv, MAX(CASE WHEN lang = 'SV' THEN position END) AS position_sv FROM source GROUP BY user_id;
Cette requête utilise le CASE pour comparer la colonne lang aux langues souhaitées et renvoie l'organisation ou le poste correspondant si la condition est remplie. La fonction MAX() est ensuite utilisée pour agréger les résultats pour chaque ID utilisateur.
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!