Menggabungkan Lajur dan Mengunci Data dengan SQL
Masalah:
Anda mempunyai pangkalan data dengan lajur yang mewakili ID, jenis, subjenis, kiraan dan bulan. Bagaimanakah anda boleh menukar data ini kepada format baharu yang mana jenis dan subjenis digabungkan menjadi lajur baharu dan kiraan dijumlahkan untuk setiap gabungan unik ID dan bulan?
Penyelesaian:
Untuk mencapai output yang diubah ini, anda boleh menggunakan pengendali PIVOT dalam SQL Server 2005. Operator PIVOT membenarkan anda menukar secara dinamik baris ke dalam lajur.
Coretan kod berikut menunjukkan cara menggunakan PIVOT untuk mencapai hasil yang diingini:
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique 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 stackoverflow_159456 ) AS PIVOT_CODES SET @sql = ' ;WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT] FROM stackoverflow_159456 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)
Butiran Pelaksanaan:
Melaksanakan pembolehubah @sql akan mengembalikan jadual yang diingini dengan lajur bercantum dan jumlah terjumlah. Penyelesaian ini membolehkan pengagregatan data kompleks yang cekap dan dinamik.
Atas ialah kandungan terperinci Bagaimanakah SQL boleh digunakan untuk menggabungkan lajur, data pangsi dan jumlah kiraan untuk gabungan ID dan bulan yang unik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!