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

Bagaimanakah Saya Boleh Menukar Lajur kepada Baris dalam Pelayan SQL?

Patricia Arquette
Lepaskan: 2025-01-21 19:27:14
asal
518 orang telah melayarinya

How Can I Convert Columns to Rows in SQL Server?

Penukaran lajur ke baris dalam Pelayan SQL

Menukar lajur pangkalan data kepada baris ialah teknik penting dalam analisis dan penyusunan semula data. Terdapat beberapa cara untuk mencapai penukaran ini dalam SQL Server, masing-masing mempunyai kelebihan dan pertimbangan tersendiri.

Kaedah 1: Fungsi UNPIVOT

Fungsi UNPIVOT menyokong penukaran lajur ke baris secara asli. Sintaks UNPIVOT adalah seperti berikut:

<code class="language-sql">UNPIVOT (indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3, ...)) AS unpiv</code>
Salin selepas log masuk

Contoh:

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

Kaedah 2: Gunakan UNION ALL’s CROSS APPLY

CROSS APPLY menggunakan UNION ALL ialah cara lain untuk menukar lajur kepada baris. Ia menggabungkan baris secara berulang berdasarkan lajur yang disediakan:

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

Kaedah 3: Gunakan CROSS APPLY of NILAI

Kaedah ini menggunakan klausa VALUES dalam CROSS APPLY untuk menentukan nama dan nilai lajur:

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

Kaedah 4: SQL Dinamik

Untuk senario di mana anda perlu melepaskan sejumlah besar lajur, Dynamic SQL 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>
Salin selepas log masuk

Anda boleh melakukan penukaran lajur ke baris dengan cekap dalam SQL Server dengan memilih kaedah yang paling sesuai untuk senario khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Lajur kepada Baris dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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