Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Pivot dan Concatenate Lajur dalam SQL Server Menggunakan Operator PIVOT?

Bagaimana untuk Pivot dan Concatenate Lajur dalam SQL Server Menggunakan Operator PIVOT?

Mary-Kate Olsen
Lepaskan: 2025-01-01 12:23:13
asal
730 orang telah melayarinya

How to Pivot and Concatenate Columns in SQL Server Using the PIVOT Operator?

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan