首頁 >資料庫 >mysql教程 >如何使用 PIVOT 運算子在 SQL Server 中透視和連接列?

如何使用 PIVOT 運算子在 SQL Server 中透視和連接列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 12:23:13719瀏覽

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

SQL Server 中的資料透視表和連接列

給定的SQL Server 資料庫包含具有ID、TYPE、SUBTYPE、COUNT 和MONTH 的記錄列。目標是將這些資料轉換為資料透視表,其中 TYPE 和 SUBTYPE 連接成新列,並對匹配的 ID 和 MONTH 值的 COUNT 進行求和。

為了實現此目的,SQL Server 提供了 PIVOT 運算符,該運算符會動態地根據提供的值產生列。以下是使用 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);

此程式碼動態產生所需的列清單並使用 PIVOT 運算子建立資料透視表。產生的輸出將具有所需的格式,其中包含連接的 TYPE 和 SUBTYPE 列以及求和的 COUNT 值。

以上是如何使用 PIVOT 運算子在 SQL Server 中透視和連接列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn