Parfois, il est avantageux de créer des colonnes sur un total des valeurs multiples dans un champ de base de données Oracle. Voir les valeurs de données en colonnes, par opposition aux lignes, permet différentes manipulations et des présentations données. Un exemple peut consister à effectuer une opération mathématique sur une liste dans un champ, mais présenté comme un résultat inférieur à une autre valeur représentant une catégorie pour cette valeur. Cela peut être considéré comme l`équivalent d`une grille ou croisé graphique.
Voir ce que les données sont disponibles via une requête. Ex: SELECT * FROM TABLE
Le résultat de la requête ci-dessus peut donner les trois colonnes suivantes avec les valeurs indiquées.
CATÉGORIE ARTICLE PRIX $
------ A ----------- 1 -------- 5
------ A ----------- 2 ------- 10
------ B ----------- 2 ------- 10
------ B ----------- 3 ------- 15
------ C ----------- 3 ------- 15
------ C ----------- 4 ------- 20
Réécrivez la requête pour créer des colonnes pour les valeurs de catégorie.
SÉLECTIONNER
DECODE (CATEGORIE, `A`, ITEM, null) CATEGORYA,
DECODE (CATEGORIE, `B`, ITEM, null) catégorieB,
DECODE (CATEGORIE, `B`, ITEM, null) CATEGORYC
DE TABLE
Remarque: Cette requête montre comment une valeurs de ligne peuvent devenir colonnes
Résultat de la requête
CATEGORYA catégorieB CATEGORYC
------- 1
------- 2
----------------------------- 2
----------------------------- 3
---------------------------------------------------- 3
---------------------------------------------------- 4
Même si CATEGORIE a été divisée en colonnes uniques, les lignes de données ne fusionnent pas. Six lignes de données (voir résultat Step1) occupent encore six rangées de sortie.
Réécrivez la requête pour trouver le prix maximum par catégorie colonnes:
SÉLECTIONNER
MAX (DECODE (CATEGORIE, `A`, $ PRIX, null)) CATEGORYA,
MAX (DECODE (CATEGORIE, `B`, $ PRIX, null)) catégorieB,
MAX (DECODE (CATEGORIE, `C`, $ PRIX, null)) CATEGORYC
DE TABLE
Remarque:
Cette requête montre maintenant une rangée résultante de données (le prix maximum) par catégorie.
Cela peut être vérifié par rapport aux données d`exemple dans Step1.
pour CategoryA, 10 est au maximum de valeurs 5 et 10.
pour catégorieB, 15 est maximum de valeurs 10 et 15.
- pour CategoryC, 20 est maximum de valeurs 15 et 20.
Résultat de la requête:
CATEGORYA catégorieB CATEGORYC
---------10 ----------------- 15 --------------- 20
Conseils & Avertissements
- MAX est une fonction d`agrégation Oracle qui trouve la valeur maximale d`une liste de valeurs, que ce soit alphanumérique, numérique ou de données.
- DECODE est une fonction Oracle qui convertit les valeurs de champ comme une nouvelle colonne nommée.