Rumah >pangkalan data >Oracle >Bagaimana untuk menukar baris kepada lajur dalam Oracle

Bagaimana untuk menukar baris kepada lajur dalam Oracle

PHPz
PHPzasal
2023-04-18 09:06:5422296semak imbas

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!

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