Maison >base de données >tutoriel mysql >Comment puis-je faire pivoter dynamiquement des lignes en colonnes dans Oracle ?

Comment puis-je faire pivoter dynamiquement des lignes en colonnes dans Oracle ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 14:14:46587parcourir

How Can I Dynamically Pivot Rows into Columns in Oracle?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn