4

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

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

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

4

1 回答 1

9

您应该始终在列名 周围放置方括号[]

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 定义的字母。字母的 Unicode 定义包括从 a 到 z、从 A 到 Z 的拉丁字符,以及来自其他语言的字母字符。
  • 下划线 (_)、at 符号 (@) 或数字符号 (#)。

如果是其他任何东西,那么您将需要使用方括号。[]

于 2012-09-04T17:49:54.037 回答