【问题标题】:Does sql pivot function not allow integers as column names?sql pivot 函数是否不允许整数作为列名?
【发布时间】:2012-09-04 17:45:17
【问题描述】:

我正在尝试做一个相当符号枢轴。这个按预期运行:

with cte as
(
    select Symbol, TradeDate, 'Per' + cast(Period as CHAR(3)) Per, Value
    from tblDailySMA
)

select * from cte
pivot
(Max(Value) for Per in (Per5,Per10,Per15,Per20,Per30,Per40,Per50,Per60,Per80,Per100,Per110,Per120,
    Per150,Per200)) pvt

这个给出了错误Incorrect syntax near 5(并突出显示'for Period in'之后的第一个值(5):

with cte as
(
    select Symbol, TradeDate, Period, Value
    from tblDailySMA
)

select * from cte
pivot
(Max(Value) for Period in (5,10,15,20,30,40,50,60,80,100,110,120,150,200)) pvt

经过多次试验和错误,我得到了第一个运行...是否有原因,例如可能不允许整数值作为列名?谢谢..

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2008-r2


    【解决方案1】:

    您应该始终在 column names [] 周围放置方括号:

    with cte as
    (
        select Symbol, TradeDate, Period, Value
        from tblDailySMA
    )
    
    select * from cte
    pivot
    (
       Max(Value) for Period in ([5],[10],[15],[20],[30],[40],[50],[60],[80],[100],[110],[120],[150],[200])
    ) pvt
    

    来自MSDN

    第一个字符必须是以下之一:

    • Unicode 标准 3.2 定义的字母。统一码 字母的定义包括从 a 到 z 的拉丁字符, 从 A 到 Z,以及其他语言的字母字符。
    • 下划线 (_)、at 符号 (@) 或数字符号 (#)。

    如果是其他内容,则需要使用方括号。 []

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多