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
Lepaskan: 2025-01-21 19:17:13
asal
333 orang telah melayarinya

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:

select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;
Salin selepas log masuk

Gunakan CROSS APPLY dan UNION ALL

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

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);
Salin selepas log masuk

Gunakan klausa CROSS APPLY dan VALUES

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

select id, entityid,
  indicatorname,
  indicatorvalue
from yourtable
cross apply
(
  values
  ('Indicator1', Indicator1),
  ('Indicator2', Indicator2),
  ('Indicator3', Indicator3),
  ('Indicator4', Indicator4)
) c (indicatorname, indicatorvalue);
Salin selepas log masuk

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:

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;
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan