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
Barbara Streisandasal
2025-01-21 19:32:091075semak imbas

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".

<code class="language-sql">SELECT id, entityId,
  indicatorname,
  indicatorvalue
FROM yourtable
UNPIVOT
(
  indicatorvalue
  FOR indicatorname IN (Indicator1, Indicator2, Indicator3)
) unpiv;</code>

Gunakan UNION ALL’s CROSS APPLY

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

SANGLANG GUNA menggunakan klausa NILAI

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

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

<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>

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:
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