尝试以下 sql 并用您的表替换临时表:
创建表#REQUIREMENTS
(
ID INT,
需求描述 VARCHAR(100)
)
创建表#CUSTOMERS
(
ID INT,
客户名称 VARCHAR(100)
)
创建表 #CUSTOMER_REQUIREMENTS
(
ID INT,
需求ID INT,
客户 ID INT,
日期完成日期
)
插入#REQUIREMENTS 值(1,'Requirement1')
插入#REQUIREMENTS 值(2,'Requirement2')
插入#REQUIREMENTS 值(3,'Requirement3')
插入#REQUIREMENTS 值(4,'Requirement4')
插入 #CUSTOMERS 值 (1,'JOHN')
插入 #CUSTOMERS 值 (2,'MARY')
插入#CUSTOMERS 值(3,'BOB')
插入#CUSTOMER_REQUIREMENTS 值(1,1,1,'2-2-2014')
插入 #CUSTOMER_REQUIREMENTS 值(1,2,1,'2-2-2014')
插入 #CUSTOMER_REQUIREMENTS 值(1,1,2,'2-2-2014')
插入 #CUSTOMER_REQUIREMENTS 值(1,2,2,'2-2-2014')
插入#CUSTOMER_REQUIREMENTS 值(1,3,2,'2-2-2014')
插入#CUSTOMER_REQUIREMENTS 值(1,4,2,'2-2-2014')
将@DynamicPivotQuery 声明为 NVARCHAR(MAX)
将@ColumnName 声明为 NVARCHAR(MAX)
SELECT @ColumnName= ISNULL(@ColumnName + ',','') + QUOTENAME(CustomerName) FROM (SELECT DISTINCT CustomerName FROM #CUSTOMERS) 作为课程
SET @DynamicPivotQuery =
N'SELECT ReqID, ReqDes, ' + @ColumnName + '
从
(
选择
TEMP.ReqID,
TEMP.ReqDes,
TEMP.CusName,
CusReq.DateCompleted
从
(
选择
req.ID 作为 ReqID,
req.RequirementDescription 作为 ReqDes,
cus.ID 作为 CusID,
cus.CustomerName 作为 CusName
从
#REQUIREMENTS req,#CUSTOMERS 客户
) 作为 TEMP
左连接
#CUSTOMER_REQUIREMENTS 作为 CusReq
在
TEMP.ReqID = CusReq.RequirementID AND
Temp.CusID = CusReq.CustomerID
) 作为 TEMP1
PIVOT(MAX(TEMP1.DateCompleted)
FOR CusName IN (' + @ColumnName + ')) AS PVTTable'
EXEC sp_executesql @DynamicPivotQuery
删除表#CUSTOMER_REQUIREMENTS
删除表#CUSTOMERS
删除表#REQUIREMENTS