Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Unpivoting Boleh Mengubah Data Tabular Lebar kepada Format Panjang?
Nyahpaut: Menstruktur Semula Data Perhubungan
Bayangkan jadual, StudentMarks
, menyimpan nama pelajar (Name
) dan markah mereka dalam pelbagai mata pelajaran (Maths
, Science
, English
). Data pada mulanya disusun dengan cara ini:
<code>Name, Maths, Science, English Tilak, 90, 40, 60 Raj, 30, 20, 10</code>
Tetapi, bagaimana jika kita memerlukan struktur yang berbeza—struktur yang mana markah setiap subjek muncul pada baris baharu? Hasil yang diinginkan kelihatan seperti ini:
<code>Name, Subject, Marks Tilak, Maths, 90 Tilak, Science, 40 Tilak, English, 60 Raj, Maths, 30 Raj, Science, 20 Raj, English, 10</code>
Di sinilah SQL unpivoting masuk. Ia merupakan teknik yang hebat untuk menukar jadual lebar (banyak lajur) kepada jadual panjang (banyak baris).
Berikut ialah cara untuk mencapai ini menggunakan pertanyaan SQL:
<code class="language-sql">SELECT u.name, u.subject, u.marks FROM student s UNPIVOT ( marks FOR subject IN (Maths, Science, English) ) u;</code>
Pertanyaan ini menggunakan pengendali UNPIVOT
. Ia mengambil lajur Maths
, Science
dan English
dan mengubahnya menjadi lajur Subject
tunggal, dengan markah yang sepadan dalam lajur Marks
. Hasilnya ialah format panjang yang diingini.
Untuk demonstrasi langsung, lihat SQL Fiddle ini:
Atas ialah kandungan terperinci Bagaimanakah SQL Unpivoting Boleh Mengubah Data Tabular Lebar kepada Format Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!