Maison  >  Article  >  base de données  >  Comment convertir une table verticale Oracle en table horizontale

Comment convertir une table verticale Oracle en table horizontale

WBOY
WBOYoriginal
2022-05-24 17:29:027623parcourir

Dans Oracle, vous pouvez utiliser la fonction unpivot() pour convertir un tableau vertical en tableau horizontal. Cette fonction est utilisée pour convertir les champs des colonnes d'une ligne en plusieurs lignes de données en fonction des valeurs uniques de. la ligne. La syntaxe est "sélectionner le champ à partir des données Définir unpivot (valeur de colonne pour le nom de colonne personnalisé dans (nom de colonne))".

Comment convertir une table verticale Oracle en table horizontale

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Comment convertir une table verticale Oracle en table horizontale

La conversion de colonne Oracle consiste à convertir les champs des colonnes d'une ligne en plusieurs lignes de données en fonction de la valeur unique de la ligne.

Les données de base du tableau des performances des élèves sont que la performance d'un élève correspond à un enregistrement. Ensuite, nous avons converti les lignes en colonnes et les avons transformés en un enregistrement correspondant au score d'un élève dans chaque colonne (mathématiques, anglais, chinois). Cet article consiste donc à convertir à nouveau le tableau de scores des étudiants précédemment converti (table de sauvegarde score_copy) en colonnes et en lignes et à le convertir en données originales. Les données du cas sont les suivantes :

Comment convertir une table verticale Oracle en table horizontale

Comment convertir une table verticale Oracle en table horizontale

Alors, comment implémenter le changement de colonne ? Deux méthodes courantes sont présentées ci-dessous :

1. Utilisez union all pour l'épissage, qui peut parfaitement convertir les colonnes correspondantes en enregistrements de ligne. Le code spécifique est le suivant :

select t.stuname, '英语' as coursename ,t.英语 as score  from SCORE_COPY t
union all
select t.stuname, '数学' as coursename ,t.数学 as score  from SCORE_COPY t
union all
select t.stuname, '语文' as coursename ,t.语文 as score  from SCORE_COPY t

Les résultats sont les suivants :

Comment convertir une table verticale Oracle en table horizontale

2. .Utilisez Oracle pour automatiquement La fonction non-pivot de colonne à ligne peut également parfaitement résoudre ce problème. La structure syntaxique spécifique est la suivante :

select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))

Le code d'implémentation est le suivant :

select stuname, coursename ,score from
score_copy  t
unpivot
(score for coursename in (英语,数学,语文))

Les résultats sont les suivants :

Comment convertir une table verticale Oracle en table horizontale

Tutoriel recommandé : "Tutoriel vidéo Oracle"

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