Rumah > Artikel > pangkalan data > Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak
Dalam Oracle, anda boleh menggunakan fungsi pivot() untuk menukar jadual mendatar kepada jadual menegak Fungsi ini digunakan untuk menukar baris kepada lajur Sintaksnya ialah "SELECT * FROM (set pertanyaan data) PIVOT (SUM (baris Nilai lajur selepas penukaran)UNTUK lajur IN (nilai lajur selepas penukaran) yang perlu ditukar kepada baris)".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
Penukaran baris ke lajur Oracle ialah menggunakan nilai medan tertentu sebagai nilai unik, dan kemudian menukar nilai baris medan lain kepada nilai lajurnya. Di sini kita masih menggunakan jadual skor pelajar sistem kita sebagai contoh Jadual markah (baris) bersesuaian dengan markah setiap pelajar dalam setiap mata pelajaran Kemudian kita perlu membuat laporan yang memaparkan semua mata pelajaran setiap pelajar lajur maklumat prestasi. Data kes adalah seperti berikut:
Jadi bagaimana kita mencapainya? Berikut adalah beberapa kaedah satu demi satu:
1 Pertama sekali, kita mesti berfikir bahawa kumpulan Oracle mengikut (kumpulan mengikut) adalah seperti berikut:
select c.stuname, --利用分组聚合函数 sum(decode(b.coursename, '英语(2018上学期)', t.score, 0)) as "英语(2018上学期)", sum(decode(b.coursename, '数学(2018上学期)', t.score, 0)) as "英语(2018上学期)", sum(decode(b.coursename, '语文(2018上学期)', t.score, 0)) as "英语(2018上学期)" from STUDENT.SCORE t, student.course b, student.stuinfo c where t.courseid = b.courseid and t.stuid = c.stuid group by c.stuname
Kami menggunakan kumpulan Kumpulan pelajar mengikut, kemudian gunakan penyahkod untuk menukar nilai gred kursus yang sepadan, dan kemudian jumlahnya untuk mendapatkan nilai keputusan gred tersebut:
2. Oracle11g kemudiannya menyediakan PIVOT fungsi terbina dalam, yang dapat menyelesaikan dengan sempurna keperluan untuk penukaran baris Struktur sintaks khusus adalah seperti berikut:
SELECT * FROM (数据查询集) PIVOT ( SUM(Score/*行转列后 列的值*/) FOR coursename/*需要行转列的列*/ IN (转换后列的值) )
The kod khusus adalah seperti berikut:
select * from (select c.stuname, b.coursename, t.score from STUDENT.SCORE t, student.course b, student.stuinfo c where t.courseid = b.courseid and t.stuid = c.stuid ) /*数据源*/ PIVOT ( SUM(score/*行转列后 列的值*/) FOR coursename/*需要行转列的列*/ IN ('英语(2018上学期)' as 英语,'数学(2018上学期)' as 数学,'语文(2018上学期)' as 语文 ) ) ;
Keputusan adalah seperti berikut :
Tutorial yang disyorkan: "Tutorial Video Oracle"
Atas ialah kandungan terperinci Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!