【问题标题】:Pivot SQL query is not working数据透视 SQL 查询不起作用
【发布时间】:2017-04-09 08:42:44
【问题描述】:

我需要创建一个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 附近有错误的语法 '2016 年 4 月 3 日'。

更详细的讨论可以在sqlservercentral找到

如果您能帮我整理一下,将不胜感激。

提前谢谢你。

【问题讨论】:

  • ´标记您正在使用的 dbms! (那里有一些非 ANSI SQL...)

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


【解决方案1】:
;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;

【讨论】:

    【解决方案2】:

    您希望方括号作为分隔符,而不是单引号。 “日期”是列名,而不是值:

    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),而不是依赖于位置的日期格式。

    【讨论】:

    • 谢谢你的建议,失败了“Invalid Column Name: WeekValue”,WeekValue是dbo.staging中的一个列,是什么意思?
    • @PasLeChoix 。 . .如果WeekValue 确实在dbo.staging 中,那么我看不出你怎么会得到这个错误。也许名称中有空格?
    猜你喜欢
    • 2016-06-22
    • 1970-01-01
    • 2011-06-18
    • 2019-07-22
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多