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(そして'の期間'の後の最初の値(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のラテン文字、および他の言語の文字が含まれます。
  • アンダースコア(_)、アットマーク(@)、または番号記号(#)。

それ以外の場合は、角かっこを使用する必要があります。[]

于 2012-09-04T17:49:54.037 に答える