2015-03-31 34 views
0

管理工作室报告:关键字'for'附近的语法不正确。 PlType开始与两种类型的名称,即:2或4 实施例:20H,20D,20M,40H,40D,40M,40X等是不同类型的PlType问题与Sql女士的枢轴语法

Select * 
Into #PivotTbl from 
(Select Country, PlType , LEFT(PLTYPE,1) as PType 
From #ToPivot) As ToPvt 
Pivot 
(PlType for PType in (2,4)) As Piv1 

我不理解'for'附近有什么错误。当我更换

(PlType for PType in (2,4)) As Piv1 

(max(PlType) for PType in (2,4)) As Piv1 

我得到的错误:附近有语法错误 '2'。 请帮我解决这个问题。

回答

2

2和4成为支点列,你需要围绕它们在方括号像这样:

Select * 
Into #PivotTbl from 
(Select Country, PlType , LEFT(PLTYPE,1) as PType 
From #ToPivot) As ToPvt 
Pivot 
(max(PlType) for PType in ([2],[4])) As Piv1 

即使你不使用max你会得到这个错误。原因是你必须使用一个集合函数以及pivot

+0

谢谢你,工作。但请你也可以告诉我,为什么我必须为Pivot提供一个聚合函数。 ([2],[4])中的PType的 (最大(PlType))作为Piv1 – 2015-03-31 10:29:26

+0

它应该与 Pivot (PlType for PType in([2],[4] ))由于PlType是varchar类型,因此Piv1 。但是显示错误。 – 2015-03-31 10:33:21

+1

该文档明确指出需要聚合函数。我想这是因为pivot操作用于汇总,这需要对数据执行汇总。 – 2015-03-31 10:34:26