Rumah >pangkalan data >Oracle >Bagaimana untuk menukar baris kepada lajur dalam Oracle
Dalam pangkalan data Oracle, penukaran baris ialah keperluan pemprosesan data biasa. Ia menukar berbilang nilai berturut-turut kepada berbilang nilai dalam lajur untuk persembahan dan analisis data yang lebih baik.
Sebagai contoh, katakan kita mempunyai jadual berikut:
ID | Name | Score1 | Score2 | Score3 |
---|---|---|---|---|
1 | John | 80 | 70 | 90 |
2 | Lily | 90 | 85 | 95 |
3 | Tom | 60 | 75 | 80 |
Jika kita ingin menukar setiap gred pelajar kepada baris yang berasingan, kita boleh menggunakan baris ke lajur untuk mencapai hasil berikut :
ID | Name | Subject | Score |
---|---|---|---|
1 | John | Score1 | 80 |
1 | John | Score2 | 70 |
1 | John | Score3 | 90 |
2 | Lily | Score1 | 90 |
2 | Lily | Score2 | 85 |
2 | Lily | Score3 | 95 |
3 | Tom | Score1 | 60 |
3 | Tom | Score2 | 75 |
3 | Tom | Score3 | 80 |
Dalam Oracle, terdapat beberapa cara untuk menukar baris kepada lajur, termasuk menggunakan UNPIVOT dan UNION ALL. Seterusnya, kami akan memperincikan langkah dan sintaks setiap kaedah.
Gunakan UNPIVOT untuk memindahkan baris ke lajur
UNPIVOT ialah kata kunci dalam Oracle SQL yang boleh memindahkan lajur ke dalam baris. Gunakan pertanyaan UNPIVOT untuk menukar berbilang lajur kepada berbilang baris. Untuk menggunakan UNPIVOT, anda perlu memastikan bahawa setiap baris dalam jadual mempunyai bilangan lajur yang sama dan jenis data yang sama.
Berikut ialah langkah untuk menggunakan UNPIVOT untuk menukar baris kepada lajur:
Langkah 1: Buat jadual sampel
Pertama, kita perlu mencipta jadual sampel untuk menyediakan data tersebut.
CREATE TABLE score ( ID INT, Name VARCHAR2(20), Score1 INT, Score2 INT, Score3 INT ); INSERT INTO score VALUES (1, 'John', 80, 70, 90); INSERT INTO score VALUES (2, 'Lily', 90, 85, 95); INSERT INTO score VALUES (3, 'Tom', 60, 75, 80); COMMIT;
Langkah 2: Jalankan pertanyaan UNPIVOT
Kemudian, kita boleh menggunakan pertanyaan UNPIVOT berikut untuk mengubah data:
SELECT ID, Name, Subject, Score FROM score UNPIVOT ( Score FOR Subject IN (Score1, Score2, Score3) );
Hasil berjalan adalah seperti berikut :
ID | Name | Subject | Score |
---|---|---|---|
1 | John | Score1 | 80 |
1 | John | Score2 | 70 |
1 | John | Score3 | 90 |
2 | Lily | Score1 | 90 |
2 | Lily | Score2 | 85 |
2 | Lily | Score3 | 95 |
3 | Tom | Score1 | 60 |
3 | Tom | Score2 | 75 |
3 | Tom | Score3 | 80 |
Langkah 3: Kosongkan jadual
Akhir sekali, kita boleh mengosongkan data dengan memadamkan jadual:
DROP TABLE score;
Gunakan UNION ALL untuk menukar baris dan lajur
UNION ALL Ia juga merupakan kaedah yang digunakan dalam Oracle SQL untuk menukar baris kepada lajur. Lajur boleh ditukar kepada baris menggunakan pertanyaan UNION ALL. Berikut ialah langkah untuk menggunakan UNION ALL untuk menukar baris kepada lajur:
Langkah 1: Buat jadual sampel
Pertama, kita perlu mencipta jadual sampel untuk menyediakan data.
CREATE TABLE score ( ID INT, Name VARCHAR2(20), Score1 INT, Score2 INT, Score3 INT ); INSERT INTO score VALUES (1, 'John', 80, 70, 90); INSERT INTO score VALUES (2, 'Lily', 90, 85, 95); INSERT INTO score VALUES (3, 'Tom', 60, 75, 80); COMMIT;
Langkah 2: Jalankan pertanyaan UNION ALL
Kemudian, kita boleh menggunakan pertanyaan UNION ALL berikut untuk mengubah data:
SELECT ID, Name, 'Score1' Subject, Score1 Score FROM score UNION ALL SELECT ID, Name, 'Score2' Subject, Score2 Score FROM score UNION ALL SELECT ID, Name, 'Score3' Subject, Score3 Score FROM score ORDER BY ID, Subject;
Hasil berjalan ialah seperti berikut:
ID | Name | Subject | Score |
---|---|---|---|
1 | John | Score1 | 80 |
1 | John | Score2 | 70 |
1 | John | Score3 | 90 |
2 | Lily | Score1 | 90 |
2 | Lily | Score2 | 85 |
2 | Lily | Score3 | 95 |
3 | Tom | Score1 | 60 |
3 | Tom | Score2 | 75 |
3 | Tom | Score3 | 80 |
Langkah 3: Kosongkan jadual
Akhir sekali, kita boleh mengosongkan data dengan memadamkan jadual:
DROP TABLE score;
Ringkasan
Baris ke lajur ialah teknologi pemprosesan Data yang biasa membolehkan kami memaparkan dan menganalisis data dengan lebih baik. Dalam Oracle SQL, kita boleh menggunakan UNPIVOT dan UNION ALL untuk menukar baris kepada lajur. Dengan menguasai konsep ini dan sintaks yang berkaitan, kami boleh memproses dan menganalisis data dalam pangkalan data dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk menukar baris kepada lajur dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!