Rumah >pangkalan data >tutorial mysql >Bagaimana dengan Cekap Menukar Lajur Jadual SQL Server menjadi Baris?

Bagaimana dengan Cekap Menukar Lajur Jadual SQL Server menjadi Baris?

Linda Hamilton
Linda Hamiltonasal
2025-01-21 19:17:13282semak imbas

How to Efficiently Convert SQL Server Table Columns into Rows?

Tukar lajur jadual SQL Server kepada baris

Menukar lajur jadual kepada baris ialah teknik pemprosesan data yang sangat berguna. Artikel ini menerangkan beberapa cara untuk menyelesaikan tugas ini dalam SQL Server.

Fungsi UNPIVOT

Fungsi UNPIVOT secara eksplisit menukar lajur kepada baris, membolehkan penyusunan semula data yang fleksibel. Contohnya, untuk menukar lajur 'Indicator1' kepada 'Indicator150' dalam skema jadual contoh:

<code class="language-sql">select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;</code>

Gunakan CROSS APPLY dan UNION ALL

Sebagai alternatif, berbilang subquery boleh digabungkan menggunakan CROSS APPLY dan UNION ALL:

<code class="language-sql">select id, entityid,
  indicatorname,
  indicatorvalue
from yourtable
cross apply
(
  select 'Indicator1', Indicator1 union all
  select 'Indicator2', Indicator2 union all
  select 'Indicator3', Indicator3 union all
  select 'Indicator4', Indicator4 
) c (indicatorname, indicatorvalue);</code>

Gunakan klausa CROSS APPLY dan VALUES

Dalam versi SQL Server yang disokong, klausa CROSS APPLY dan VALUES boleh digunakan:

<code class="language-sql">select id, entityid,
  indicatorname,
  indicatorvalue
from yourtable
cross apply
(
  values
  ('Indicator1', Indicator1),
  ('Indicator2', Indicator2),
  ('Indicator3', Indicator3),
  ('Indicator4', Indicator4)
) c (indicatorname, indicatorvalue);</code>

SQL Dinamik untuk bilangan lajur yang banyak

Untuk jadual dengan bilangan lajur yang banyak yang perlu diputar, pertimbangkan untuk menggunakan SQL dinamik untuk menjana pertanyaan secara pemrograman:

<code class="language-sql">DECLARE @colsUnpivot AS NVARCHAR(MAX),
   @query  AS NVARCHAR(MAX)

select @colsUnpivot 
  = stuff((select ','+quotename(C.column_name)
           from information_schema.columns as C
           where C.table_name = 'yourtable' and
                 C.column_name like 'Indicator%'
           for xml path('')), 1, 1, '')

set @query 
  = 'select id, entityId,
        indicatorname,
        indicatorvalue
     from yourtable
     unpivot
     (
        indicatorvalue
        for indicatorname in ('+ @colsunpivot +')
     ) u'

exec sp_executesql @query;</code>

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Lajur Jadual SQL Server menjadi Baris?. 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