Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membuat Jadual Pangsi secara Dinamik dengan Lajur Bercantum dalam SQL Server?
Pivot Table dan Concatenate Lajur dalam SQL Server
Mentransformasikan jadual pangkalan data untuk memaparkan data dengan cara yang lebih teratur dan bermakna selalunya diperlukan untuk data analisis dan pembentangan. Dalam kes khusus ini, matlamatnya ialah untuk mencipta "jadual pangsi" daripada jadual pangkalan data, dengan lajur TYPE dan SUBTYPE digabungkan menjadi lajur baharu dan nilai COUNT diagregatkan mengikut lajur ID dan MONTH.
Memahami Operator PIVOT
SQL Server menawarkan pengendali PIVOT, yang membolehkan anda mengubah data daripada format berorientasikan baris kepada format berorientasikan lajur. Ia membolehkan anda mengumpulkan data mengikut satu atau lebih lajur dan mencipta lajur baharu berdasarkan nilai dalam lajur lain.
Penjanaan Dinamik Lajur Pangsi
Dalam senario yang diberikan , terdapat kemungkinan "100s" gabungan TYPE dan SUBTYPE, menjadikannya tidak praktikal untuk mengekod keras pangsi lajur. Untuk mengatasinya, SQL dinamik boleh digunakan untuk menjana senarai lajur pangsi berdasarkan gabungan unik nilai TYPE dan SUBTYPE.
Pelaksanaan SQL Dinamik
SQL berikut kod menunjukkan cara menjana lajur pangsi secara dinamik dan melaksanakan PIVOT operasi:
DECLARE @sql AS NVARCHAR(MAX); DECLARE @pivot_list AS NVARCHAR(MAX) = NULL; -- Leave NULL for COALESCE technique DECLARE @select_list AS NVARCHAR(MAX) = NULL; -- Leave NULL for COALESCE technique -- Build the pivot column list and select list SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']', @select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']' FROM ( SELECT DISTINCT TYPE + '_' + SUBTYPE AS PIVOT_CODE FROM YourTableName ) AS PIVOT_CODES; -- Generate the dynamic SQL query SET @sql = ' WITH P AS ( SELECT ID, [MONTH], TYPE + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT] FROM YourTableName GROUP BY ID, [MONTH], TYPE + ''_'' + SUBTYPE ) SELECT ID, [MONTH], ' + @select_list + ' FROM P PIVOT ( SUM([COUNT]) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS PVT'; -- Execute the dynamic SQL query EXEC (@sql);
Faedah Menggunakan SQL Dinamik
Dengan menggunakan SQL dinamik, lajur pangsi dijana secara automatik, menghapuskan keperluan untuk penggabungan manual. Pendekatan ini fleksibel dan boleh digunakan pada jadual dengan banyak gabungan JENIS dan SUBTYPE.
Nota:
Kod di atas menggunakan fungsi COALESCE untuk menggabungkan senarai lajur pangsi dan pilih senarai. Sebagai alternatif, anda boleh menentukan operator gabungan (',' atau ';') secara manual mengikut keperluan.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Jadual Pangsi secara Dinamik dengan Lajur Bercantum dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!