【发布时间】:2018-07-04 08:54:54
【问题描述】:
我第一次尝试将动态查询作为数据透视表。我使用 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。
- 我是 Dynamic Query 的新手。
谢谢,
泰米尔语
【问题讨论】:
标签: dynamic sql-server-2014 ssms-2012