Pivot / Requête analyse croisée dans Oracle 10g (Dynamique numéro de colonne)
J'ai cette vue de la table
UserName Product NumberPurchaces
-------- ------- ---------------
'John Doe' 'Chair' 4
'John Doe' 'Table' 1
'Jane Doe' 'Table' 2
'Jane Doe' 'Bed' 1
Comment puis-je créer une requête qui doit fournir ce pivot vue dans Oracle 10g ?
UserName Chair Table Bed
-------- ----- ----- ---
John Doe 4 1 0
Jane Doe 0 2 1
Aucun moyen de le faire de façon dynamique? J'ai vu tellement de nombreuses approches (décoder, PL/SQL boucles, les syndicats, 11g de pivot)
Mais je n'ai pas encore trouver quelque chose qui fonctionne pour moi sur la base de l'exemple ci-dessus
Modifier: je ne sais pas le nombre ou le type de produits dans le temps de développement, donc ce doit être dynamique
Vous ne pouvez pas. Toute instruction SQL particulier doit retourner un jeu de résultats avec le même nombre de colonnes, le nom des colonnes et les types de données des colonnes
OriginalL'auteur Eran Medan | 2010-08-13
Vous devez vous connecter pour publier un commentaire.
Oracle 11g est le premier à soutenir PIVOT/UNPIVOT, de sorte que vous avez à utiliser:
Vous pouvez utiliser DÉCODER, mais le CAS a été pris en charge depuis la 9i.
OriginalL'auteur OMG Ponies
Je pense qu'on aurait à écrire un peu de code pour créer dynamiquement la requête. Chaque MAX() est identique sauf pour le "PRÉSIDENT", "TABLE", etc, des chaînes de caractères.
Donc, on aurait itterate dans les données pour trouver tous les produits et de construire une deuxième requête que l'on va. Exécutez alors que construite dynamiquement la requête.
OriginalL'auteur MatBailie