Methoden zum Implementieren der Zeilen-Spalten-Konvertierung: 1. Verwenden Sie die Funktion PIVOT(), um die Zeilen-in-Spalten-Konvertierung mit der Syntax „SELECT * FROM (data set) PIVOT (SUM(Score) FOR coursename IN (konvertierte Spalte) zu implementieren value))"; 2. Verwenden Sie die Funktion unpivot(), um den Spaltenwechsel zu realisieren.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.
Oracle-Zeile in Spalte
Oracle-Zeile in Spalte konvertiert den Wert eines bestimmten Felds als eindeutigen Wert und konvertiert dann den Zeilenwert eines anderen Felds in seinen Spaltenwert. 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:
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 Gruppe nach, 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. Das Ergebnis ist wie folgt:
2 -in-Funktion PIVOT, die diese Zeile-zu-Spalte-Anforderung perfekt lösen kann, ist die spezifische Syntaxstruktur 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 语文 ) ) ;
Das Ergebnis ist wie folgt:
Oracle-Spaltenzeilenkonvertierung
Oracle-Spaltenzeilenkonvertierung besteht darin, die Felder der Spalten in einer Zeile entsprechend dem eindeutigen Wert der Zeile zu ändern. In mehrere Datenzeilen konvertieren. Beispielsweise handelt es sich bei den Basisdaten der Schüler-Bewertungstabelle in der Oracle-Zeile bis -Spalte oben um einen Datensatz, der der Fachnote eines Schülers entspricht. Dann haben wir die Zeilen in Spalten umgewandelt und daraus einen Datensatz erstellt, der den Ergebnissen eines Schülers in jeder Spalte entspricht (Mathematik, Englisch, Chinesisch). In diesem Artikel geht es also darum, die zuvor konvertierte Schülerbewertungstabelle (Sicherungstabelle score_copy) erneut in Spalten und Zeilen umzuwandeln und in Originaldaten umzuwandeln. Die Falldaten lauten wie folgt:
Wie implementieren wir also die Spaltenumschaltung? Im Folgenden werden zwei häufig verwendete Methoden vorgestellt:
1. Verwenden Sie Union All zum Spleißen, wodurch die entsprechenden Spalten perfekt in Zeilendatensätze umgewandelt werden können. Der spezifische Code lautet wie folgt:
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
Die Ergebnisse sind wie folgt:
2. Oracle automatisch verwenden Die Spalten-zu-Zeilen-Funktion Unpivot kann dieses Problem ebenfalls perfekt lösen. Die spezifische Syntaxstruktur lautet wie folgt:
select 字段 from 数据集 unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))
Der Implementierungscode lautet wie folgt:
select stuname, coursename ,score from score_copy t unpivot (score for coursename in (英语,数学,语文))
Die Ergebnisse sind wie folgt:
Empfohlenes Tutorial: „Oracle Tutorial“
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Zeilen-Spalten-Konvertierung in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!