Maison  >  Article  >  base de données  >  Oracle convertit une colonne en plusieurs colonnes

Oracle convertit une colonne en plusieurs colonnes

WBOY
WBOYoriginal
2023-05-13 16:17:381022parcourir

La conversion d'une colonne de données en plusieurs colonnes de données est une exigence courante dans Oracle. Par exemple, disons que vous disposez d'un tableau contenant des produits, des dates de vente et des quantités vendues. Vous souhaitez convertir cela en ventes mensuelles pour chaque produit. Le moyen le plus simple d’atteindre cet objectif est d’utiliser l’opération PIVOT.

Ce qui suit est un exemple de table :

PRODUCT   SALE_DATE   SALE_QUANTITY
-------------------------------------
A         2021-01-01  100
A         2021-01-15  200
A         2021-02-01  300
B         2021-01-01  150
B         2021-03-01  250

Nous voulons le convertir au format suivant :

PRODUCT   JAN_SALE  FEB_SALE  MAR_SALE
-------------------------------------
A         300       300       0
B         150       0         250

Pour réaliser cette opération avec PIVOT, vous pouvez utiliser le SQL suivant :

SELECT PRODUCT, 
       NVL(JAN_SALE, 0) AS JAN_SALE,
       NVL(FEB_SALE, 0) AS FEB_SALE,
       NVL(MAR_SALE, 0) AS MAR_SALE
FROM 
  (SELECT PRODUCT, 
          TO_CHAR(SALE_DATE, 'MON') AS SALE_MONTH, 
          SALE_QUANTITY
   FROM   SALES_TABLE)
PIVOT 
  (SUM(SALE_QUANTITY)
   FOR SALE_MONTH IN ('JAN' AS JAN_SALE, 'FEB' AS FEB_SALE, 'MAR' AS MAR_SALE))

Dans le SQL ci-dessus, nous convertissons d'abord le tableau d'origine est un résultat intermédiaire avec une colonne MOIS. Nous avons utilisé la fonction TO_CHAR pour convertir SALE_DATE en une courte chaîne de mois. Nous utilisons ensuite l'opérateur PIVOT pour convertir la quantité des ventes de chaque mois en colonnes. La syntaxe de PIVOT est très concise, il vous suffit de préciser les colonnes et valeurs à convertir ainsi que le nom de la nouvelle colonne.

Dans l'exemple ci-dessus, nous avons utilisé la fonction NVL pour garantir que les résultats incluent tous les produits, même s'il n'y a aucune vente dans un mois. Si la fonction NVL n'est pas utilisée, les résultats de la requête ne peuvent afficher que les produits et les mois de ventes.

L'opération PIVOT convient non seulement à la conversion de colonnes en plusieurs colonnes, mais peut également convertir des lignes en plusieurs lignes en utilisant une syntaxe similaire. Par exemple, disons que vous disposez d'un tableau avec les régions, les produits et les quantités vendues. Vous souhaitez convertir cela en ventes totales par produit et par région. En utilisant l'opération PIVOT, vous pouvez facilement atteindre cet objectif.

En bref, l'opération PIVOT est un outil très utile et simple dans Oracle SQL, qui peut rapidement convertir une colonne en plusieurs colonnes ou une ligne en plusieurs lignes. Sa flexibilité et sa nature personnalisable le rendent utile dans de nombreuses situations.

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!

Déclaration:
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