Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyahpivot Data dan Sertakan Nama Lajur sebagai Lajur Baharu dalam SQL?

Bagaimana untuk Menyahpivot Data dan Sertakan Nama Lajur sebagai Lajur Baharu dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-21 04:37:07893semak imbas

How to Unpivot Data and Include Column Names as a New Column in 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!

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