Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Pivot Jadual dan Menggabungkan Lajur dalam SQL Server?

Bagaimana untuk Pivot Jadual dan Menggabungkan Lajur dalam SQL Server?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-02 17:04:40881semak imbas

How to Pivot a Table and Concatenate Columns in SQL Server?

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:

  1. Jana Kod Pangsi: Tentukan gabungan nilai TYPE dan SUBTYPE yang berbeza. Contohnya, ['A_Z'].
  2. Bina SQL Dinamik: Gunakan SQL dinamik untuk menjana pertanyaan yang merangkumi pengendali PIVOT.
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
';
  1. Laksanakan Dynamic SQL: Laksanakan pertanyaan SQL yang dijana untuk mendapatkan yang dikehendaki output.

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!

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