Maison > Article > base de données > Comment convertir une table verticale Oracle en table horizontale
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))".
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.
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 :
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 :
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 :
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!