我第一次尝试将动态查询作为透视表。我用这个解决了很多错误。现在我只能跟着
常见错误
.
消息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。
-
我不熟悉动态查询。
谢谢,
泰米尔普加尔