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

Comment faire pivoter dynamiquement des lignes en colonnes dans Oracle ?

Patricia Arquette
Libérer: 2025-01-06 14:23:44
original
468 Les gens l'ont consulté

How to Dynamically Pivot Rows into Columns in Oracle?

Pivoter dynamiquement des lignes en colonnes dans Oracle

Vous disposez d'une table avec des paires de clés et de valeurs dans Oracle 10g et souhaitez la transformer en table avec des colonnes pour chaque clé unique, avec la valeur correspondante dans chaque ligne. Le tableau résultant doit s'ajuster dynamiquement à toute nouvelle paire clé-valeur ajoutée au tableau d'origine.

Solution Oracle 11g

Oracle 11g introduit l'opération PIVOT, qui vous permet d'effectuer un tel pivotement dynamique :

select * from
(select id, k, v from _kv)
pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
Copier après la connexion

Cette requête créera une table avec des colonnes pour chacune des quatre clés spécifiées dans le IN clause.

Option de pivotement XML

Oracle 11g fournit également une option XML pivot qui vous permet de gérer les en-têtes de colonnes inconnus :

select * from
(select id, k, v from _kv)
pivot xml(max(v) for k in (any))
Copier après la connexion

Cette requête produira un résultat XML set, où chaque colonne correspond à une clé unique et la valeur associée est stockée en tant que valeur de l'élément XML. valeur.

Remarques :

  • Les solutions fournies supposent que les valeurs de chaque clé sont agrégées (max est utilisé), mais vous pouvez ajuster la fonction d'agrégation selon vos besoins.
  • Il est important de noter que même si l'option pivot XML autorise n'importe quel nombre de colonnes inconnues, elle nécessite de spécifier les colonnes dans la clause IN, ce qui n'est pas toujours le cas. réalisable.

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