Maison > base de données > tutoriel mysql > Comment faire pivoter des lignes vers des colonnes dans Oracle : DECODE vs PIVOT ?

Comment faire pivoter des lignes vers des colonnes dans Oracle : DECODE vs PIVOT ?

Mary-Kate Olsen
Libérer: 2025-01-03 01:09:39
original
854 Les gens l'ont consulté

How to Pivot Rows to Columns in Oracle: DECODE vs. PIVOT?

Comment transformer des données de lignes en colonnes dans Oracle : solutions de pivotement

Les bases de données Oracle offrent des techniques polyvalentes pour restructurer les données de lignes en colonnes, un processus appelé pivotement. Cette transformation devient nécessaire lorsque les données sont organisées dans un format étroit et que vous devez les présenter dans une vue plus large.

Pour réaliser la conversion ligne en colonne, Oracle propose deux méthodes :

Fonction DECODE dans Oracle 10g

Dans les versions antérieures d'Oracle (10g), vous pouvez réaliser un pivotement à l'aide de la fonction DECODE. Considérez la structure de table suivante :

LOAN NUMBER DOCUMENT_TYPE DOCUMENT_ID
992452533663 Voters ID XPD0355636
992452533663 Pan card CHXPS5522D
992452533663 Drivers licence DL-0420110141769

Pour faire pivoter ces données, vous pouvez utiliser la fonction DECODE comme suit :

SELECT
    loan_number,
    MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id,
    MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card,
    MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence
  FROM
    doc_tab
GROUP BY loan_number
ORDER BY loan_number;
Copier après la connexion

Cette requête regroupe les données par numéro de prêt et utilise DECODE imbriqué fonctions pour attribuer des ID de document à des types de documents spécifiques. La fonction MAX renvoie la valeur unique souhaitée pour chaque combinaison de document de prêt.

Clause PIVOT dans Oracle 11g et versions ultérieures

Oracle 11g a introduit une clause PIVOT dédiée pour simplifier les transformations de ligne en colonne. La requête suivante démontre son utilisation :

SELECT *
  FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);
Copier après la connexion

La clause PIVOT de cette requête définit explicitement les colonnes à créer dans le résultat transformé. Il regroupe automatiquement les données en fonction des types de documents spécifiés et combine les ID de document correspondants.

Pour plus d'informations sur les techniques de pivotement dans Oracle, reportez-vous aux ressources ci-dessous :

  • [Tim L'article de Hall sur Pivoter dans Oracle](https://www.oracle.com/technetwork/database/oracle-magazine/oracle-11g-pivot-127859.html)
  • [Exemple SQLFiddle comparant les deux solutions](https://www .sqlfiddle.com/#!5/7956/2/0)

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