Rumah > pangkalan data > tutorial mysql > Bagaimana dengan Cekap Menukar Lajur kepada Baris dalam SQL Server?

Bagaimana dengan Cekap Menukar Lajur kepada Baris dalam SQL Server?

Barbara Streisand
Lepaskan: 2025-01-21 19:32:09
asal
1075 orang telah melayarinya

How to Efficiently Convert Columns to Rows in SQL Server?

SQL Server: Tukar lajur kepada baris

Dalam SQL Server, anda mungkin perlu menukar jadual yang mengandungi berbilang lajur penunjuk kepada struktur baris untuk setiap penunjuk dan nilai yang sepadan dengannya. Ini boleh dicapai melalui beberapa teknik.

Fungsi UNPIVOT

Fungsi UNPIVOT ialah cara mudah untuk menukar lajur kepada baris. Ia menukar lajur yang ditentukan kepada baris, dengan nama lajur asal menjadi baris baharu yang dilabelkan "nama penunjuk". Nilai lajur asal menjadi baris berlabel "nilai penunjuk".

SELECT id, entityId,
  indicatorname,
  indicatorvalue
FROM yourtable
UNPIVOT
(
  indicatorvalue
  FOR indicatorname IN (Indicator1, Indicator2, Indicator3)
) unpiv;
Salin selepas log masuk

Gunakan UNION ALL’s CROSS APPLY

Cara lain ialah menggabungkan CROSS APPLY dengan 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

SANGLANG GUNA menggunakan klausa NILAI

Jika versi SQL Server anda menyokongnya, anda juga boleh menggunakan klausa VALUES dengan CROSS APPLY:

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 jadual dengan banyak lajur penunjuk, menjana pernyataan SQL yang diperlukan secara manual boleh membosankan. SQL Dinamik boleh mengautomasikan proses ini:

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

Teknologi ini menyediakan kaedah yang fleksibel untuk menukar lajur kepada baris dalam SQL Server dan boleh menyesuaikan diri dengan struktur jadual dan keperluan data yang berbeza.

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