Maison >base de données >tutoriel mysql >Comment puis-je faire pivoter des données mensuelles plates dans Oracle SQL pour une analyse plus facile ?

Comment puis-je faire pivoter des données mensuelles plates dans Oracle SQL pour une analyse plus facile ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-23 07:37:10725parcourir

How Can I Pivot Flat Monthly Data in Oracle SQL for Easier Analysis?

Reconstruction des données du tableau croisé dynamique Oracle SQL

Problème : Convertir des données tabulaires plates pour une analyse pivot

Supposons que vous ayez un tableau contenant des données numériques organisées par mois :

<code>MONTH | VALUE
-------|------
1      | 100
2      | 200
3      | 300
...</code>

Le but est de convertir ces données dans un format pivot pour visualiser plus visuellement les valeurs mensuelles :

<code>MONTH_JAN | MONTH_FEB | MONTH_MAR | ...
---------|---------|---------|
100       | 200       | 300       | ...</code>

Oracle 11g et supérieur : opérateur PIVOT

Oracle 11g et versions ultérieures introduisent l'opérateur PIVOT, qui permet de faire pivoter facilement les données. La syntaxe est la suivante :

<code>SELECT *
FROM table_name
PIVOT (
  aggregate_function(column_name)
  FOR (pivot_column)
  IN (list_of_values)
);</code>

Exemple d'utilisation de l'opérateur PIVOT

Considérez les exemples de données suivants :

<code>CREATE TABLE tq84_pivot (
  month NUMBER,
  value NUMBER
);

INSERT INTO tq84_pivot VALUES (1, 100), (2, 200), (3, 300), (4, 400), (5, 500), (6, 600);

SELECT 
  *
FROM 
  tq84_pivot
PIVOT (
  SUM(value) AS sum_value
  FOR (month) IN (1 AS month_jan,
                  2 AS month_feb,
                  3 AS month_mar,
                  4 AS month_apr,
                  5 AS month_mai,
                  6 AS month_jun,
                  7 AS month_jul,
                  8 AS month_aug,
                  9 AS month_sep,
                 10 AS month_oct,
                 11 AS month_nov,
                 12 AS month_dec)
);</code>

Le résultat est comme prévu :

<code>MONTH_JAN | MONTH_FEB | MONTH_MAR | ...
---------|---------|---------|
100       | 200       | 300       | ...</code>

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