Pivotement dynamique dans Oracle : transformer des lignes en colonnes
Cet article aborde le défi du pivotement dynamique des lignes en colonnes dans Oracle. Cette technique permet de transformer les données où les clés et les valeurs sont stockées dans des lignes, en un format tabulaire avec des colonnes représentant les clés et des lignes représentant les valeurs.
Le problème
Étant donné une table avec ID comme clé primaire, clés (K) et valeurs (V), l'objectif est de créer un tableau croisé dynamique avec autant de colonnes qu'il y a de clés uniques dans la table d'origine. La requête doit être capable de gérer les noms de colonnes inconnus qui peuvent apparaître dynamiquement.
Solution Oracle 11g
Oracle 11g propose l'opération PIVOT qui répond à cette exigence. La requête suivante démontre son utilisation :
select * from (select id, k, v from _kv) pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
Option de pivot XML Oracle (Oracle 11g)
Pour les scénarios dans lesquels les en-têtes de colonnes sont inconnus, Oracle fournit un XML pivot option, comme le montre la requête ci-dessous :
select * from (select id, k, v from _kv) pivot xml (max(v) for k in (any))
Modifier :
Des modifications ont été apportées à la requête pour agréger les valeurs et inclure la clause IN, comme indiqué dans les commentaires. Cependant, spécifier des valeurs dans la clause IN entrave la nature dynamique de la requête.
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!