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>
Contoh:
<code class="language-sql">SELECT id, entityId, indicatorname, indicatorvalue FROM yourtable UNPIVOT ( indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
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>
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>
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>
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!