Rumah >pangkalan data >tutorial mysql >Bagaimana cara menukar baris ke lajur dalam SQL Server menggunakan fungsi pivot?

Bagaimana cara menukar baris ke lajur dalam SQL Server menggunakan fungsi pivot?

Barbara Streisand
Barbara Streisandasal
2025-01-25 12:32:10704semak imbas

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

Tukar baris kepada lajur menggunakan fungsi PIVOT dalam SQL Server

Soalan

Jadual Pangsi dalam SQL Server menyediakan cara yang berkesan untuk menukar data daripada baris ke lajur. Walau bagaimanapun, pengguna mungkin menghadapi cabaran dalam membina pertanyaan yang betul.

Penyelesaian

Gunakan fungsi PIVOT pada nilai lajur yang diketahui:

Untuk nilai lajur yang dipratentukan (nombor minggu dalam kes ini), anda boleh menggunakan fungsi PIVOT secara langsung:

<code class="language-sql">select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;</code>

Jana nilai lajur pangsi secara dinamik:

Untuk mengendalikan nilai lajur yang tidak diketahui (seperti nombor minggu dinamik), anda boleh menggunakan gabungan SQL dinamik dan fungsi tetingkap:

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(Week) 
                    from yt
                    group by Week
                    order by Week
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT store,' + @cols + ' from 
             (
                select store, week, xCount
                from yt
            ) x
            pivot 
            (
                sum(xCount)
                for week in (' + @cols + ')
            ) p '

execute(@query);</code>

Keputusan:

Kedua-dua kaedah menghasilkan hasil yang sama:

|. 1 |

|. 138 | |. 102 |. 212 | |. 105 |. 78 | |. 109 |. 97 |

Atas ialah kandungan terperinci Bagaimana cara menukar baris ke lajur dalam SQL Server menggunakan fungsi pivot?. 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