Pivot dans DB2
Cette question tourne autour de la transposition de lignes en colonnes dans une table DB2. Les données fournies sont structurées avec les colonnes ItemID, Item et Value. L'objectif est de convertir ces données dans un format transposé, où les valeurs de Meeting, Advise et NoAdvise sont disposées sous forme de colonnes, l'ItemID servant d'identifiant de ligne.
Une approche pour exécuter ce pivot consiste à utilisez une clause GROUP BY avec plusieurs expressions MAX(). En utilisant MAX() et en spécifiant les critères pour chaque type d'élément dans l'instruction CASE, les valeurs correspondantes peuvent être récupérées. Par exemple :
SELECT ItemID, MAX(CASE WHEN Item = 'Meeting' THEN Value END) AS Meeting, MAX(CASE WHEN Item = 'Advise' THEN Value END) AS Advise, MAX(CASE WHEN Item = 'NoAdvise' THEN Value END) AS NoAdvise FROM table_name GROUP BY ItemID
Cette requête génère le format transposé souhaité, où ItemID sert de clé primaire et Meeting, Advise et NoAdvise deviennent les en-têtes de colonne. La clause GROUP BY garantit que les données sont regroupées par ItemID, fournissant une ligne distincte pour chaque élément.
Alternativement, le même résultat peut être obtenu en utilisant plusieurs sous-requêtes corrélées, comme le suggère la réponse actuellement acceptée dans ce forum. . Cependant, il convient de noter que l'approche par sous-requête peut rencontrer des problèmes de performances par rapport à la solution GROUP BY plus efficace, en particulier avec des ensembles de données plus volumineux.
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!