Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQLServer:创建动态数据透视表的存储过程有什么错误?_Sql Server_Sql Server Express - Fatal编程技术网

Sql server SQLServer:创建动态数据透视表的存储过程有什么错误?

Sql server SQLServer:创建动态数据透视表的存储过程有什么错误?,sql-server,sql-server-express,Sql Server,Sql Server Express,我创建了以下存储过程以获得一个动态透视表,该表可以在第一列中扩展任意数量的员工,在第一行中扩展任意数量的课程 DECLARE @PivotColumnHeaders VARCHAR(MAX) SELECT @PivotColumnHeaders = COALESCE( @PivotColumnHeaders + ',[' + cast(CourseName as varchar) + ']', '[' + cast(CourseName as

我创建了以下存储过程以获得一个动态透视表,该表可以在第一列中扩展任意数量的员工,在第一行中扩展任意数量的课程

DECLARE @PivotColumnHeaders VARCHAR(MAX) SELECT @PivotColumnHeaders = COALESCE( @PivotColumnHeaders + ',[' + cast(CourseName as varchar) + ']', '[' + cast(CourseName as varchar)+ ']' ) FROM employee, courses DECLARE @PivotTableSQL NVARCHAR(MAX) SET @PivotTableSQL = N' select * from ( SELECT dbo.employee.Name, dbo.employee.BadgeNo, dbo.employee.Division, dbo.employee.Organization, dbo.courses.CourseName, dbo.courses.CourseID FROM dbo.employee LEFT OUTER JOIN dbo.courses ON dbo.employee.CourseID = dbo.courses.CourseID ) DataTable PIVOT ( Count(CourseID) FOR CourseName IN ( '+ @PivotColumnHeaders+' ) ) PivotTable ' EXECUTE(@PivotTableSQL) 此存储过程的问题是:当我使用sql server management studio工具添加课程和员工时,它给了我以下错误:

Msg 8156,16级,状态1,第17行 为“数据透视表”多次指定了列“xxxxx”


xxxxx是表中第一个员工的姓名。

在构建列标题时,是否需要在第一个Select语句中指定distinct关键字。我猜一个员工可能参加过两次或两次以上的同一课程,或者是复习