有什麼方法可以透視2基於列?我已經完成了使用1列作爲支點基礎的動態數據透視,但這一次我無法弄清楚。T-SQL樞軸有多個列基礎樞軸
這裏是我的表模式:
CREATE TABLE [dbo].[ProdOrders]
(
[ItemCode] [nvarchar](50) NULL,
[ReleasedDate] [date] NULL,
[PlanQty] [float] NULL,
[ActualQty] [float] NULL
)
而且我填的表格:
INSERT INTO [dbo].[ProdOrders]([ItemCode], [ReleasedDate], [PlanQty], [ActualQty])
VALUES
('0D203-22882-079','2017-08-18',12654,4218),
('0D203-22882-079','2017-08-23',15758,5253),
('0D203-22882-079','2017-08-27',26263,8754),
('0D203-22882-079','2017-09-02',7354,2451),
('0D301-05422-079','2017-08-18',31144,10381),
('0D301-05422-079','2017-08-18',20612,6871),
('0D301-05422-079','2017-08-23',25765,8588),
('0D301-05422-079','2017-08-29',19582,6527),
('0D301-05422-079','2017-09-04',15459,5153),
('0D203-22882-079','2017-09-22',5232,1744),
('0D203-22882-079','2017-09-28',13236,4412),
('0D203-22882-079','2017-10-03',7693,2564),
('0D301-05422-079','2017-09-23',24735,8245),
('0D301-05422-079','2017-09-27',19561,6520),
('0D301-05422-079','2017-09-06',23755,7918),
('0D301-05422-079','2017-09-14',23755,7918),
('0D301-05422-079','2017-09-17',29694,9898),
('0D203-22882-079','2017-11-01',2263,754),
('0D203-22882-079','2017-10-21',15693,5231),
('0D203-22882-079','2017-10-20',15968,5323),
('0D203-22882-079','2017-10-25',10521,3507),
('0D301-05422-079','2017-10-21',23755,7918),
('0D301-05422-079','2017-10-29',17816,5939),
('0D301-05422-079','2017-11-01',15612,5204),
('0D301-05422-079','2017-10-03',20816,6939),
('0D301-05422-079','2017-10-11',15612,5204),
('0D301-05422-079','2017-10-18',26020,8673)
這是預期的輸出:
ItemCode 201708-Plan 201708-Actual 201709-Plan 201709-Actual 201710-Plan 201710-Actual 201711-Plan 201711-Actual
--------------- ----------- ------------- ----------- ------------- ----------- ------------- ----------- -------------
0D203-22882-079 54,674 18,225 25,822 8,607 49,875 16,625 2,263 754
0D301-05422-079 97,103 32,367 136,959 45,652 104,020 34,673 15,612 5,204
我有轉動的PlanQty
和ActualQty
基於使用年份和月份與實際和數量級聯的發佈日期。
我創建了一個支點劇本,但我得到一個錯誤:
DECLARE @PivotColumns AS NVARCHAR(MAX)
SELECT @PivotColumns = COALESCE(@PivotColumns + ',','') + QUOTENAME([YRMOPLAN]) + QUOTENAME([YRMOACT])
FROM (SELECT DISTINCT CONVERT(char(6), cast([ReleasedDate] as date), 112) + 'Plan' as [YRMOPLAN]
,CONVERT(char(6), cast([ReleasedDate] as date), 112) + 'Actual' as [YRMOACT] FROM [dbo].[ProdOrders]) as PivotQuery ORDER BY [YRMOPLAN]
SELECT @PivotColumns
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT * FROM
(
SELECT ItemCode, CONVERT(char(6), cast([ReleasedDate] as date), 112) + ''Plan'' as [YRMOPLAN]
,CONVERT(char(6), cast([ReleasedDate] as date), 112) + ''Actual'' as [YRMOACT], PlanQty,ActualQty
FROM ProdOrders
) x
PIVOT
(
SUM(PlanQty)
FOR [YRMOPLAN] IN (' + @PivotColumns + ')
) p
PIVOT
(
SUM(ActualQty)
FOR [YRMOACT] IN (' + @PivotColumns + ')
) p2;'
EXEC SP_EXECUTESQL @query
這是錯誤我得到:
Msg 102, Level 15, State 1, Line 10
Incorrect syntax near '201708Actual'
[SQL服務器:動態樞軸超過5列]的可能的複製(https://stackoverflow.com/questions/18657214/sql-server-dynamic-pivot-over-5-columns) –