Rumah >pangkalan data >tutorial mysql >Bagaimana dengan Cekap Menukar Lajur Jadual SQL Server menjadi Baris?
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:
<code class="language-sql">select id, entityId, indicatorname, indicatorvalue from yourtable unpivot ( indicatorvalue for indicatorname in (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
Gunakan CROSS APPLY dan UNION ALL
Sebagai alternatif, berbilang subquery boleh digabungkan menggunakan CROSS APPLY dan 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>
Gunakan klausa CROSS APPLY dan VALUES
Dalam versi SQL Server yang disokong, klausa CROSS APPLY dan VALUES boleh digunakan:
<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 bilangan lajur yang banyak
Untuk jadual dengan bilangan lajur yang banyak yang perlu diputar, pertimbangkan untuk menggunakan SQL dinamik untuk menjana pertanyaan secara pemrograman:
<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>
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!