Я делаю попытку запустить свой первый динамический стержень в SQL Server 2012.Dynamic поворотного SQL Server 2012
Моего #temp
стол, который я использую для динамического поворота выглядит следующим образом.
YearMonth Agreement nr Discount
------------------------------------
201303 123 1
201303 12 0
201304 1 0
Я бегу этот код и он не работает:
сообщениеDECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName = ISNULL(@ColumnName + ',', '') + QUOTENAME(YearMonth)
FROM (SELECT DISTINCT YearMonth FROM #FINAL) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT [Agreement nr],YearMonth , ' + @ColumnName + '
FROM #FINAL
PIVOT(
COUNT(agreement nr)
FOR YearMonth IN (' + @ColumnName + ') AS PVTTable'
--Execute the Dynamic Pivot Query
EXECUTE @DynamicPivotQuery;
Ошибка я получаю
FOR YearMonth IN ([201403]) AS PVTTable' is not a valid identifier.
Что я здесь отсутствует?
Я попробовал решение, и выдает сообщение об ошибке: COUNT (Соглашение пг) ДЛЯ годМесяц В ([201503], [201506], [201504] , [201505])) AS PVTTable 'не является допустимым идентификатором. Может ли это сделать, что GROUP BY необходимо, поскольку мы делаем COUNT и не делаем GROUP BY, содержащую YearMonth? – user3197575
Попробуйте поставить «Соглашение nr» в квадратных скобках тоже: [Соглашение nr] –
Интересно. Я положил скобки вокруг него, и он по-прежнему вызывает ту же ошибку: Msg 203, Level 16, State 2, Line 20 Название «SELECT [Соглашение nr]», YearMonth, [201503], [201506], [201504], [ 201505] FROM (Выберите [Соглашение nr], YearMonth from #tester) src PIVOT ( COUNT ([Соглашение nr]) FOR YearMonthIN ([201503], [201506], [201504], [201505])) AS PVTTable 'не является допустимым идентификатором. – user3197575