2015-03-31 4 views
0

Студия управления сообщает: Неправильный синтаксис рядом с ключевым словом 'for'. PlType начать с двумя типами имени, а именно: 2 или 4. Пример: 20H, 20D, 20М, 40H, 40D, 40М, 40X и т.д. различные типы PlTypeПроблема с синтаксисом Pivot в Ms 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. Я имею в виду «max» в (max (PlType) для PType в ([2], [4])) Как Piv1 –

+0

Он должен работать с Pivot (PlType для PType в ([2], [4])) Как Piv1 , потому что PlType имеет тип varchar. Но есть ошибка. –

+1

В документах четко указано, что необходима агрегатная функция. Я полагаю, это связано с тем, что для обобщения используется операция поворота, для чего требуется агрегация для данных. –

Смежные вопросы