SQL中对临时表如何用 PIVOT 进行列转换

有数据库里有一个临时表#TEMPDBF,表内见下表

想通过PIVOT将数据转换成
42周 43周 44周 45周 46周 47周
上海 2196 7385 6830 6523 6242 1217

方法一:
SELECT 42周,43周,44周,45周,46周,47周 FROM #TEMPDBF
PIVOT(SUM(TEU) FOR 周 IN (42周,43周,44周,45周,46周,47周)) t
【错误提示】: IN 后的括号里42周提示 【'(' 附近有语法错误。】

改成方法二:
SELECT 42周,43周,44周,45周,46周,47周 FROM #TEMPDBF
PIVOT(SUM(TEU) FOR 周 IN ([42周],[43周],[44周],[45周],[46周],[47周])) b
【错误提示】:【SUM(TEU) FOR 周】 中的【TEU】、【周】无效

求解决方法,谢谢
【临时表#TEMPDBF初始数据】
最新回答
素婉纤尘

2022-10-15 23:30:14

1、跟是否临时表没有关系。

2、SELECT列表中的转出字段,也要加上[]

3、加上DQ字段

1
2
3
4
5
6
7
8
9
10
11
SELECT  DQ
    ,[42周]
    ,[43周]
           ,[44周]
       ,[45周]
       ,[46周]
       ,[47周]
FROM    #TEMPDBF 
PIVOT( SUM(TEU) FOR 
    周 IN ([42周], [43周], [44周], [45周], [46周],[47周]) 
) b