2016-11-25 76 views
0

我需要創建一個pivot查詢以獲得每週的一些年度報表作爲列,查詢不起作用。在故障排除,我已經將它隔離到以下幾點:數據透視SQL查詢不起作用

WITH PivotData AS 
(
select [ProjectWork Number], WeekNO, WeekValue From dbo.staging 
) 

select [ProjectWork Number], WeekValue, 'Apr-03-2016', 'Apr-10-2016' 
From PivotData 
PIVOT 
(
Sum(WeekValue) For WeekNO in ('Apr-03-2016', 'Apr-10-2016') 
) As PivotResult 

它拋出錯誤:

Msg 102, Level 15, State 1, Line 10 Incorrect syntax near 'Apr-03-2016'.

更詳細的討論可以在sqlservercentral

發現它會如果你不勝感激可以幫助我整理出來。

預先感謝您。

+0

'標記您正在使用的dbms! (有些非ANSI SQL ......) – jarlh

回答

2

你想要方括號作爲分隔符,而不是單引號。在「日期」是列名,而不是vaues:

WITH PivotData AS (
    select [ProjectWork Number], WeekNO, WeekValue From dbo.staging 
) 
select [ProjectWork Number], WeekValue, [Apr-03-2016], [Apr-10-2016] 
From PivotData 
PIVOT (
    Sum(WeekValue) For WeekNO in ([Apr-03-2016], [Apr-10-2016]) 
) As PivotResult; 

我會建議你使用ISO標準的日期格式(如YYYY-MM-DD),而不是依賴於位置的人。

+0

感謝您的建議,它失敗了「無效的列名稱:WeekValue」,WeekValue是dbo.staging中的一列,這是什麼意思? – PasLeChoix

+0

@PasLeChoix。 。 。如果'WeekValue'確實在'dbo.staging'中,那麼我看不出你是如何得到這個錯誤的。也許這個名字有一個空間呢? –

0
;WITH PivotData AS (select [ProjectWork Number], WeekNO, WeekValue From dbo.staging)select * FROM (SELECT [ProjectWork Number], WeekValue, WeekNO From PivotData)A PIVOT (Sum(WeekValue) For WeekNO in ([Apr-03-2016], [Apr-10-2016])) As PivotResult;