Oracle—decode函数行转列
文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。 以下是行转列的各个步骤操作。 1、创建学生信息,课程,成绩三张表 CREATE TABLE TB_STUDENT( STUDENTID VARCHAR2(10) PRIMARY KEY, STUNAME VARCHAR2(50), SE
文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。
以下是行转列的各个步骤操作。
1、创建学生信息,课程,成绩三张表
CREATE TABLE TB_STUDENT( STUDENTID VARCHAR2(10) PRIMARY KEY, STUNAME VARCHAR2(50), SEX VARCHAR2(8), AGE NUMBER(5) ); CREATE TABLE TB_COURSE( COURSEID VARCHAR2(10) PRIMARY KEY, COURSENAME VARCHAR2(10), TEACHER VARCHAR2(10) ); CREATE TABLE TB_SCORE( SCOREID VARCHAR2(10) PRIMARY KEY, COURSEID VARCHAR2(10), STUDENTID VARCHAR2(10), GRADE NUMBER(10) );
2、给三张表插入相应的数据
INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141101','SIM','BOY',22); INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141102','MARY','GIRL',22); INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141103','SILLY','GIRL',22); INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141104','ALICE','GIRL',22); INSERT INTO TB_STUDENT(STUDENTID,STUNAME,SEX,AGE) VALUES('20141105','SAM','BOY',22); insert into tb_course(COURSEID,coursename,teacher) VALUES('1001','MATH','SA'); insert into tb_course(COURSEID,coursename,teacher) VALUES('1002','ENGLISH','ALICE'); insert into tb_course(COURSEID,coursename,teacher) VALUES('1003','JAVA','BB'); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10001','1001','20141101',99); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10002','1001','20141102',88); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10003','1001','20141103',77); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10004','1001','20141104',98); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10005','1001','20141105',96); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10006','1002','20141101',99); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10007','1002','20141103',99); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10008','1002','20141104',99); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10009','1003','20141102',99); INSERT INTO TB_SCORE(SCOREID,COURSEID,STUDENTID,GRADE) VALUES('10010','1003','20141105',99);
插入后的数据结果如下:
STUDENTID STUNAME SEX AGE ---------- -------------------------------------------------- -------- ------ 20141101 SIM BOY 22 20141102 MARY GIRL 22 20141103 SILLY GIRL 22 20141104 ALICE GIRL 22 20141105 SAM BOY 22 COURSEID COURSENAME TEACHER ---------- ---------- ---------- 1001 MATH SA 1002 ENGLISH ALICE 1003 JAVA BB SCOREID COURSEID STUDENTID GRADE ---------- ---------- ---------- ----------- 10001 1001 20041101 99 10002 1001 20041102 88 10003 1001 20041103 77 10004 1001 20041104 98 10005 1001 20041105 96 10006 1002 20041101 99 10007 1002 20041103 99 10008 1002 20041104 99 10009 1003 20041102 99 10010 1003 20041105 99
3、对数据进行行转列操作
select g.studentid 学号,(select stu.stuname from tb_student stu where stu.studentid=g.studentid) AS 姓名, sum(decode(g.courseid,'1001',grade,0)) 数学, sum(decode(g.courseid,'1002',grade,0)) 英语, sum(decode(g.courseid,'1003',grade,0)) java from tb_score g group by g.studentid order by g.studentid;
decode函数格式:decode(column,if1,then1,defalut)
表示列如果满足if1的条件,就显示then1的内容,不满足就显示default的值!
sum(decode(...))是对decode返回的数据进行累加
4、通过上面的查询,最后显示的查询结果如下
学号 姓名 数学 英语 JAVA ---------- -------------------------------------------------- ---------- ---------- ---------- 20141101 SIM 99 99 0 20141102 MARY 88 0 99 20141103 SILLY 77 99 0 20141104 ALICE 98 99 0 20141105 SAM 96 0 99
以上是通过oracle的decode函数进行的行转列操作,初次写博文,多多指教!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um die Oracle -Tablespace -Größe abzufragen, führen Sie die folgenden Schritte aus: Bestimmen Sie den Namen Tablespace, indem Sie die Abfrage ausführen: Wählen Sie Tablespace_Name aus dba_tablespaces. Abfragen Sie die Tablespace -Größe durch Ausführen der Abfrage: Summe (Bytes) als Total_Size, sum (bytes_free) als verfügbare_space, sum

Mit der Verschlüsselung von Oracle View können Sie Daten in der Ansicht verschlüsseln und so die Sicherheit sensibler Informationen verbessern. Die Schritte umfassen: 1) Erstellen des Master -Verschlüsselungsschlüssels (MEK); 2) Erstellen einer verschlüsselten Ansicht, der Ansicht und der Verschlüsselung der Ansicht und der MEK angeben; 3) Benutzern Sie die Benutzer, auf die verschlüsselte Ansicht zuzugreifen. Wie verschlüsselte Ansichten funktionieren: Wenn ein Benutzer nach einer verschlüsselten Ansicht nachgefragt wird, verwendet Oracle MEK, um Daten zu entschlüsseln und sicherzustellen, dass nur autorisierte Benutzer auf lesbare Daten zugreifen können.

Das Erstellen einer Oracle -Tabelle umfasst die folgenden Schritte: Verwenden Sie die Tabellensyntax erstellen, um Tabellennamen, Spaltennamen, Datentypen, Einschränkungen und Standardwerte anzugeben. Der Tabellenname sollte präzise und beschreibend sein und 30 Zeichen nicht überschreiten. Der Spaltenname sollte beschreibend sein und der Datentyp gibt den in der Spalte gespeicherten Datentyp an. Die Nicht -Null -Einschränkung stellt sicher, dass Nullwerte in der Spalte nicht zulässig sind, und die Standardklausel gibt die Standardwerte für die Spalte an. Primärschlüsseleinschränkungen zur Ermittlung des eindeutigen Datensatzes der Tabelle. Die Einschränkung der Fremdschlüssel gibt an, dass sich die Spalte in der Tabelle auf den Primärschlüssel in einer anderen Tabelle bezieht. Siehe die Erstellung der Schülertabellenstudenten, die Primärschlüssel, eindeutige Einschränkungen und Standardwerte enthält.

Datenimportmethode: 1. Verwenden Sie das SQLLoader -Dienstprogramm: Datendateien vorbereiten, Steuerdateien erstellen und SQLLOADER ausführen. 2. Verwenden Sie das IMP/Exp -Tool: Daten exportieren, Daten importieren. Tipp: 1. Empfohlener SQL*Loader für Big -Data -Sets; 2. Die Zieltabelle sollte vorhanden und die Spaltendefinition entspricht. 3. Nach dem Import muss die Datenintegrität überprüft werden.

Es gibt drei Möglichkeiten, Instanznamen in Oracle anzuzeigen: Verwenden Sie den "SQLPLUS" und "Instance_name aus v $ Instance". Befehle in der Befehlszeile. Verwenden Sie den "show Instance_name;" Befehl in SQL*Plus. Überprüfen Sie die Umgebungsvariablen (Oracle_sid unter Linux) über den Task -Manager des Betriebssystems, den Oracle Enterprise Manager oder über das Betriebssystem.

Deinstallieren Sie die Methode für Oracle -Installationsfehler: Schließen Sie den Oracle -Service, löschen Sie Oracle -Programmdateien und Registrierungsschlüssel, Deinstallieren Sie Oracle -Umgebungsvariablen und starten Sie den Computer neu. Wenn das Deinstall fehlschlägt, können Sie das Oracle Universal Deinstall -Tool manuell deinstallieren.

Es gibt die folgenden Methoden, um Zeit in Oracle zu bekommen: current_timestamp: Gibt die aktuelle Systemzeit genau auf Sekunden zurück. SYSTIMESTAMP: genauer als Current_Timestamp, für Nanosekunden. SYSDATE: Gibt das aktuelle Systemdatum mit Ausnahme des Zeitteils zurück. To_char (sysdate, 'yyy-mm-dd hh24: mi: ss'): konvertiert das aktuelle Systemdatum und die Uhrzeit in ein bestimmtes Format. Extrakt: Extrahiert einen bestimmten Teil aus einem Zeitwert wie einem Jahr, Monat oder Stunde.

Ein AWR -Bericht ist ein Bericht, in dem die Datenbankleistung und Aktivitätsschnappschüsse angezeigt werden. Zu den Interpretationsschritten gehören: Identifizierung des Datums und der Uhrzeit des Aktivitäts -Snapshots. Sehen Sie sich einen Überblick über Aktivitäten und Ressourcenverbrauch an. Analysieren Sie Sitzungsaktivitäten, um Sitzungsarten, Ressourcenverbrauch und Warteeignisse zu finden. Finden Sie potenzielle Leistungsengpässe wie langsame SQL -Aussagen, Ressourcenbeständigkeit und I/A -Probleme. Wartenereignisse anzeigen, identifizieren und beheben Sie sie für die Leistung. Analysieren Sie die Muster für Latch- und Speichernutzung, um Speicherprobleme zu identifizieren, die Leistungsprobleme verursachen.
