首頁 >資料庫 >mysql教程 >如何在 SQL Server 中對多個欄位執行動態透視?

如何在 SQL Server 中對多個欄位執行動態透視?

Patricia Arquette
Patricia Arquette原創
2025-01-03 16:06:39296瀏覽

How to Perform Dynamic Pivoting on Multiple Columns in SQL Server?

在SQL Server 中動態旋轉多個欄位

問題:

問題:

在SQL🎜>在SQL中,我們如何對錶中的多個列執行動態透視,其中列名稱可以在未來?

解決方案:

要實現多列動態旋轉,請依照下列步驟操作:

    1.取消資料透視:
  • 使用UNPIVOT 或CROSS APPLY取消透視要透視的列。
select id, 
    col = cast(t_year as varchar(4))+'_'+t_type+'_'+col, 
    value
from ATM_TRANSACTIONS t
cross apply
(
    select 'total', total union all
    select 'volume', volume
) c (col, value);
在我們的範例中,我們要取消透視「總計」和「數量」」欄位:

    2。應用PIVOT 函數:
  • 將PIVOT函數應用於未透視數據,指定要透視到的列名稱。 3。 T-SQL(例如 sp_executesql)將上述查詢轉換為動態 SQL。語句結構:
select ID, 
    [2008_A_total], [2008_A_volume], [2008_B_total], [2008_B_volume],
    [2008_C_total], [2008_C_volume], [2009_A_total], [2009_A_volume]
from
(
    select id, 
        col = cast(t_year as varchar(4))+'_'+t_type+'_'+col, 
        value
    from ATM_TRANSACTIONS t
    cross apply
    (
        select 'total', total union all
        select 'volume', volume
    ) c (col, value)
) d
pivot
(
    max(value)
    for col in ([2008_A_total], [2008_A_volume], [2008_B_total], [2008_B_volume],
                [2008_C_total], [2008_C_volume], [2009_A_total], [2009_A_volume])
) piv;

輸出:

  • 這將產生具有指定列的透視結果。中的數據。

以上是如何在 SQL Server 中對多個欄位執行動態透視?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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