Pivot Table dan Concatenate Lajur dalam SQL Server
Pangkalan data SQL Server yang diberikan mengandungi rekod dengan ID, TYPE, SUBTYPE, COUNT dan MONTH lajur. Matlamatnya adalah untuk mengubah data ini menjadi jadual terpivot di mana TYPE dan SUBTYPE digabungkan menjadi lajur baharu dan COUNT dijumlahkan untuk nilai ID dan BULAN yang sepadan.
Untuk mencapainya, SQL Server menyediakan operator PIVOT, yang secara dinamik menjana lajur berdasarkan nilai yang disediakan. Begini cara anda boleh mendekati masalah ini menggunakan PIVOT:
DECLARE @sql AS VARCHAR(MAX); DECLARE @pivot_list AS VARCHAR(MAX); DECLARE @select_list AS VARCHAR(MAX); 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 TableName ) AS PIVOT_CODES; SET @sql = ';WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT] FROM TableName GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE ) SELECT ID, [MONTH], ' + @select_list + ' FROM p PIVOT ( SUM([COUNT]) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS pvt'; EXEC (@sql);
Kod ini menjana senarai lajur yang diperlukan secara dinamik dan menggunakan operator PIVOT untuk mencipta jadual terpivot. Output yang terhasil akan mempunyai format yang diingini dengan lajur TYPE dan SUBTYPE yang digabungkan serta nilai COUNT yang dijumlahkan.
Atas ialah kandungan terperinci Bagaimana untuk Pivot dan Concatenate Lajur dalam SQL Server Menggunakan Operator PIVOT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!