Les partenaires publicitaires:

Oracle: comment diviser les valeurs dans les colonnes

Parfois, il est avantageux de créer des colonnes sur un total des valeurs multiples dans un champ de base de données Oracle. Voyant les valeurs de données en tant que colonne, par opposition aux lignes, permet différentes manipulations et des présentations données. Un exemple peut être d'effectuer une opération mathématique sur une liste d'un champ, mais présenté à la suite par une autre valeur représentant une catégorie de cette valeur. Cela peut être considéré comme l'équivalent d'une grille ou croisé graphique.

Instructions

  1. Voir quelles données est disponible 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

    ------ Un ----------- ------- 2 10

    ------ B 2 ----------- ------- 10

    ------ B 3 ----------- ------- 15

    ------ C ------- ----------- 3 15

    ------ C ------- ----------- 4 20

  2. Réécrivez la requête pour créer des colonnes pour les valeurs de catégorie.

    SELECT

    DECODE (catégorie, 'A', ARTICLE, null) CATEGORYA,



    DECODE (catégorie, 'B', ARTICLE, null) CATEGORYB,

    DECODE (catégorie, 'B', ARTICLE, null) CATEGORYC

    FROM TABLE

    Note: Cette requête montre comment un valeurs de ligne peuvent devenir colonnes

    Résultat de recherche

    CATEGORYA CATEGORYB CATEGORYC

    ------- 1




    ------- 2

    ----------------------------- 2

    ----------------------------- 3

    ---------------------------------------------------- 3

    ---------------------------------------------------- 4

    Même si catégorie a été divisée en colonnes uniques, les lignes de données ne fusionnent pas. Six lignes de données (voir le résultat Etape 1) occupent encore six rangées de sortie.

  3. Réécrivez la requête pour trouver le prix maximum par catégorie colonnes:

    SELECT

    MAX (DECODE (catégorie, 'A', $ PRIX, null)) CATEGORYA,

    MAX (DECODE (catégorie, 'B', $ PRIX, null)) CATEGORYB,

    MAX (DECODE (catégorie, 'C', $ PRIX, null)) CATEGORYC

    FROM TABLE

    Note:

    Cette requête montre maintenant une rangée résultant de données (le Prix maximum) par catégorie.

    Cela peut être vérifié contre les données d'exemple à l'étape 1.

    • pour CategoryA, 10 est maximal de valeurs 5 et 10.

    • pour CategoryB, 15 est maximal de valeurs 10 et 15.

    • pour CategoryC, 20 est maximal de valeurs 15 et 20.
    • Résultat de recherche:

      CATEGORYA CATEGORYB 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 données.
    • DECODE est une fonction Oracle qui convertit les valeurs de champ comme une colonne nouvellement nommé.
    » » » » Oracle: comment diviser les valeurs dans les colonnes