Pivot SQL查询无效

时间:2016-11-25 01:55:23

标签: sql sql-server sql-server-2012 pivot

我需要创建一个pivot查询,以便将每周的年度报告作为列,查询无效。在故障排除期间,我将其分离到以下内容:

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语法不正确   'APR-03-2016'。

可以在sqlservercentral

上找到更详细的讨论

如果你能帮我解决一下,我们将不胜感激。

提前谢谢。

2 个答案:

答案 0 :(得分: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),而不是依赖于位置的日期格式。

答案 1 :(得分: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;