Jadual Pangsi dan Penggabungan Lajur
Soalan:
Bagaimana saya boleh mengubah jadual pangkalan data dengan struktur berikut:
ID TYPE SUBTYPE COUNT MONTH 1 A Z 1 7/1/2008 1 A Z 3 7/1/2008 2 B C 2 7/2/2008 1 A Z 3 7/2/2008
ke dalam jadual dengan yang berikut struktur:
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
di mana TYPE dan SUBTYPE digabungkan untuk membentuk lajur baharu (cth., "A_Z"), dan COUNT dijumlahkan untuk nilai ID dan MONTH yang sepadan?
Jawapan :
SQL Server 2005 menyediakan pengendali PIVOT yang membolehkan transformasi yang diterangkan dalam soalan. Berikut ialah penjelasan terperinci:
DECLARE @sql AS varchar(max); 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 ';
Penyelesaian ini memanfaatkan SQL dinamik untuk membina pertanyaan PIVOT berdasarkan gabungan unik nilai TYPE dan SUBTYPE, menyediakan pendekatan tanpa penyelenggaraan untuk mengendalikan berbilang jenis dan subjenis dalam pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Pivot Jadual dan Menggabungkan Lajur dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!