簡體   English   中英

來自動態列的SQL數據透視表

[英]SQL Pivot Table from dynamic columns

我寫了這個查詢來生成數據透視表

SELECT *
FROM (
    SELECT 
        ItemName_AR as [ItemName], 
        NetValue as Amount 
    FROM view_WH_CompanyTransactionDtl
) as s
PIVOT
(
    SUM(Amount)
    FOR [ItemName] IN (select ItemName_AR from WH_Items)
)AS pvt

但它導致以下錯誤

關鍵字“ select”附近的語法不正確。

在此陳述

FOR [ItemName] IN (select ItemName_AR from WH_Items)

不幸的是,您可能無法使用select語句來提供各種值(未透視表)=列(透視表)。 您可以使用IN ([value1],[value2])等,也可以考慮使用動態解決方案,這是一個鏈接: SQL Server動態數據透視表列名

您不能像這樣創建Dynamic SQL PIVOT。 您可以嘗試這樣的事情...

DECLARE @cols AS NVARCHAR(max) = Stuff((SELECT DISTINCT ',' + Quotename(ItemName_AR)
         FROM   WH_Items       
         FOR xml path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, ''); 

DECLARE @query AS NVARCHAR(max) =  'SELECT *
                                    FROM (
                                        SELECT 
                                            ItemName_AR as [ItemName], 
                                            NetValue as Amount 
                                        FROM view_WH_CompanyTransactionDtl
                                    ) as s
                                    PIVOT
                                    (
                                        SUM(Amount)
                                        FOR [ItemName] IN ('+ @cols +')
                                    )AS pvt';

EXECUTE(@query) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM