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
Libérer: 2025-01-06 14:14:46
original
579 Les gens l'ont consulté

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'))
Copier après la connexion

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))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal