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 :
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;
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.
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') );
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 :
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!