Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyahpivot Data dan Sertakan Nama Lajur sebagai Lajur Baharu dalam SQL?
Menukar Data Lebar kepada Format Panjang dalam SQL
Andaikan anda mempunyai jadual bernama StudentMarks
dengan lajur Name
, Maths
, Science
dan English
. Matlamatnya adalah untuk menukar data format lebar ini kepada format panjang, di mana nama subjek menjadi lajur baharu. Output sasaran sepatutnya menyerupai ini:
<code>Name Subject Marks Tilak Maths 90 Tilak Science 40 Tilak English 60</code>
Pendekatan biasa menggunakan operator UNPIVOT
mungkin pada mulanya kelihatan mencabar untuk memasukkan nama lajur sebagai lajur baharu. Walau bagaimanapun, penyelesaiannya adalah mudah:
<code class="language-sql">SELECT u.name, u.subject, u.marks FROM StudentMarks AS s UNPIVOT ( marks FOR subject IN (Maths, Science, English) ) AS u;</code>
Pertanyaan SQL ini menggunakan UNPIVOT
untuk menyusun semula jadual StudentMarks
(disebut sebagai 's'). Klausa FOR
dalam UNPIVOT
menentukan lajur untuk dinyahpaut (Maths
, Science
, English
), dan nama lajur ini secara automatik mengisi lajur Subject
baharu dalam set data yang terhasil. Nilai marks
diperuntukkan kepada lajur marks
dalam jadual yang tidak dipangsi. Pertanyaan yang disemak ini dengan cekap menjana lajur Nama, Subjek dan Markah yang dikehendaki dalam format panjang.
Atas ialah kandungan terperinci Bagaimana untuk Menyahpivot Data dan Sertakan Nama Lajur sebagai Lajur Baharu dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!