Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

WBOY
WBOYasal
2022-05-24 15:23:065900semak imbas

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)".

Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Cara menukar jadual mendatar Oracle kepada jadual menegak

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:

Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

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:

Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

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 :

Bagaimana untuk menukar jadual mendatar Oracle kepada jadual menegak

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn