Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membuat Jadual Pangsi secara Dinamik dengan Lajur Bercantum dalam SQL Server?

Bagaimana untuk Membuat Jadual Pangsi secara Dinamik dengan Lajur Bercantum dalam SQL Server?

Patricia Arquette
Lepaskan: 2025-01-05 14:32:41
asal
518 orang telah melayarinya

How to Dynamically Create a Pivot Table with Concatenated Columns in SQL Server?

Pivot Table dan Concatenate Lajur dalam SQL Server

Mentransformasikan jadual pangkalan data untuk memaparkan data dengan cara yang lebih teratur dan bermakna selalunya diperlukan untuk data analisis dan pembentangan. Dalam kes khusus ini, matlamatnya ialah untuk mencipta "jadual pangsi" daripada jadual pangkalan data, dengan lajur TYPE dan SUBTYPE digabungkan menjadi lajur baharu dan nilai COUNT diagregatkan mengikut lajur ID dan MONTH.

Memahami Operator PIVOT

SQL Server menawarkan pengendali PIVOT, yang membolehkan anda mengubah data daripada format berorientasikan baris kepada format berorientasikan lajur. Ia membolehkan anda mengumpulkan data mengikut satu atau lebih lajur dan mencipta lajur baharu berdasarkan nilai dalam lajur lain.

Penjanaan Dinamik Lajur Pangsi

Dalam senario yang diberikan , terdapat kemungkinan "100s" gabungan TYPE dan SUBTYPE, menjadikannya tidak praktikal untuk mengekod keras pangsi lajur. Untuk mengatasinya, SQL dinamik boleh digunakan untuk menjana senarai lajur pangsi berdasarkan gabungan unik nilai TYPE dan SUBTYPE.

Pelaksanaan SQL Dinamik

SQL berikut kod menunjukkan cara menjana lajur pangsi secara dinamik dan melaksanakan PIVOT operasi:

DECLARE @sql AS NVARCHAR(MAX);
DECLARE @pivot_list AS NVARCHAR(MAX) = NULL;  -- Leave NULL for COALESCE technique
DECLARE @select_list AS NVARCHAR(MAX) = NULL; -- Leave NULL for COALESCE technique

-- Build the pivot column list and select list
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 YourTableName
) AS PIVOT_CODES;

-- Generate the dynamic SQL query
SET @sql = '
WITH P AS (
    SELECT ID, [MONTH], TYPE + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT]
    FROM YourTableName
    GROUP BY ID, [MONTH], TYPE + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM P
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS PVT';

-- Execute the dynamic SQL query
EXEC (@sql);
Salin selepas log masuk

Faedah Menggunakan SQL Dinamik

Dengan menggunakan SQL dinamik, lajur pangsi dijana secara automatik, menghapuskan keperluan untuk penggabungan manual. Pendekatan ini fleksibel dan boleh digunakan pada jadual dengan banyak gabungan JENIS dan SUBTYPE.

Nota:

Kod di atas menggunakan fungsi COALESCE untuk menggabungkan senarai lajur pangsi dan pilih senarai. Sebagai alternatif, anda boleh menentukan operator gabungan (',' atau ';') secara manual mengikut keperluan.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Jadual Pangsi secara Dinamik dengan Lajur Bercantum dalam SQL Server?. 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