В первый раз я пытаюсь динамический запрос в виде сводной таблицы. Я решаю много ошибок, используя SO. Теперь я застрял в следующей общей ошибке .
Сообщение 102, Уровень 15, Состояние 1, Строка 33
Неверный синтаксис рядом с ')'.
Так что я не могу понять, в чем ошибка ..!
PIVOTEX
create table pivotEx (name varchar(1), mark int, subject varchar(1))
insert into pivotEx values
('a', 70,'t')
,('a', 80,'e')
,('b', 60,'t')
,('c', 80,'t')
,('c', 90,'e')
,('c', 40,'m')
Статический запрос (работает нормально)
select name, [e],[m],[t] from(
select name, mark, subject from pivotEx
) f
pivot
( sum(mark) for subject in ([e],[m],[t])
) p
Динамический запрос (что я пробую)
declare @col varchar(max)
declare @sql nvarchar(100)
set @col = N''
select @col += ',' + col from (select distinct quotename(subject) col from pivotex) colp
select @col=SUBSTRING(@col,2,len(@col))
select @col
set @sql =
N'select name, '+@col+' from(
select name, mark, subject from pivotEx
) f
pivot
( sum(mark) for subject in ('+@col+')
) p'
EXEC sp_executesql @sql
Примечание:
- Использование SQL Server 2014.
- Использование SSMS 2012.
- Я новичок в динамическом запросе.
Спасибо
TamilPugal