Heim  >  Artikel  >  Datenbank  >  So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

WBOY
WBOYOriginal
2022-05-24 15:23:065849Durchsuche

In Oracle können Sie die Funktion „pivot()“ verwenden, um eine horizontale Tabelle in eine vertikale Tabelle umzuwandeln. Die Syntax lautet „SELECT * FROM (Datenabfragesatz) PIVOT (SUM (Zeile). in Spalte) Der Wert von)FOR muss in Zeilen und Spalten IN (der Wert der konvertierten Spalte))“ konvertiert werden.

So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.

So konvertieren Sie eine horizontale Tabelle von Oracle in eine vertikale Tabelle

Bei der Konvertierung von Zeilen in Spalten von Oracle wird der Wert eines bestimmten Felds als eindeutiger Wert verwendet und dann der Zeilenwert eines anderen Felds in seinen Spaltenwert umgewandelt. Hier verwenden wir immer noch die Bewertungstabelle der Schüler unseres Systems als Beispiel. Die Datensätze (Zeilen) der Bewertungstabelle entsprechen den Bewertungen jedes Schülers in jedem Fach. Anschließend müssen wir einen Bericht erstellen, der alle Fächer jedes Schülers als Ganzes anzeigt Spalte. Leistungsinformationen. Die Falldaten lauten wie folgt:

So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

Wie erreichen wir das? Hier sind mehrere Methoden nacheinander:

1. Zunächst müssen wir darüber nachdenken, dass es möglich sein sollte, die Oracle-Gruppierung (Gruppierung nach) zu verwenden:

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

Wir verwenden Group by, um Schüler zu gruppieren , und verwenden Sie dann die Dekodierung, um den Notenwert des entsprechenden Kurses zu gruppieren, und summieren Sie ihn dann, um den Ergebniswert der Note zu erhalten:

So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

2 -in-Funktion PIVOT, die diese Zeile-zu-Spalte-Anforderung perfekt lösen kann, die spezifische Syntaxstruktur ist wie folgt:

SELECT * FROM (数据查询集)
PIVOT 
(
 SUM(Score/*行转列后 列的值*/) FOR 
 coursename/*需要行转列的列*/ IN (转换后列的值)
)

Der spezifische Code lautet wie folgt:

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 语文 )
) ;

Die Ergebnisse sind wie folgt:

So konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle

Empfohlenes Tutorial : „Oracle-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie eine horizontale Oracle-Tabelle in eine vertikale Tabelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn