[英]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.