Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menukar Lajur kepada Baris dengan Cekap dalam Pelayan SQL?

Bagaimanakah Saya Boleh Menukar Lajur kepada Baris dengan Cekap dalam Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-21 19:11:07686semak imbas

How Can I Efficiently Convert Columns to Rows in SQL Server?

Panduan Mendalam untuk Penukaran Lajur dalam Pelayan SQL

Apabila bekerja dengan jadual yang mengandungi sejumlah besar lajur metrik, menukar lajur ini kepada baris boleh menjadi sangat bermanfaat untuk tujuan analisis dan pelaporan. Transformasi ini melibatkan penstrukturan semula data untuk mencipta jadual baharu dengan skema yang berbeza.

Pernyataan Masalah

Pertimbangkan skema jadual berikut:

<code>[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]</code>

Matlamatnya ialah untuk menukar lajur metrik ini kepada baris, mencipta jadual baharu dengan skema berikut:

<code>[ID] [EntityId] [IndicatorName] [IndicatorValue]</code>

Penyelesaian menggunakan UNPIVOT

Penyelesaian yang elegan untuk menyelesaikan tugas ini adalah dengan menggunakan fungsi UNPIVOT. Sintaks UNPIVOT adalah seperti berikut:

<code>UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))</code>

Dalam contoh ini, lajur nyahpivot mewakili nilai penunjuk (contohnya, "Penunjuk1", "Penunjuk2", dll.), manakala lajur pangsi mewakili nama lajur itu sendiri. Pertanyaan berikut menggambarkan cara menggunakan UNPIVOT:

<code>select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;</code>

Dengan melaksanakan pertanyaan ini, lajur metrik akan ditukar kepada baris dan nama dan nilai metrik akan mengisi lajur baharu.

Alternatif

Selain UNPIVOT, terdapat cara lain untuk menukar lajur kepada baris:

  • CROSS APPLY USING UNION ALL: Kaedah ini melibatkan penggunaan CROSS APPLY dan UNION ALL untuk menyatakan secara eksplisit setiap nama dan nilai metrik.
  • CROSS GUNA MENGGUNAKAN NILAI: Serupa dengan kaedah di atas, tetapi menggunakan klausa NILAI dalam CROSS GUNA.
  • SQL Dinamik: Untuk situasi dengan bilangan lajur penunjuk yang banyak, SQL dinamik boleh digunakan untuk menjana pernyataan pertanyaan secara automatik.

Pilihan penyelesaian bergantung pada keperluan khusus dan versi SQL Server yang digunakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Lajur kepada Baris dengan Cekap dalam Pelayan 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