需要在SQL Server中的表上创建透视
我有一个评估表,包括以下列:-需要在SQL Server中的表上创建透视,sql,sql-server,Sql,Sql Server,我有一个评估表,包括以下列:- AssessmentID | QuestionID | Answer ------------------------------------ 1 1 Test 1 1.1 Test1 1 1.2 Test2 1 1.3 Test 1 1.4
AssessmentID | QuestionID | Answer
------------------------------------
1 1 Test
1 1.1 Test1
1 1.2 Test2
1 1.3 Test
1 1.4 Test1
1 2 Test2
现在,我想使用pivot显示Sql查询输出,如下所示
Assessment-Id 1 1.1 1.2 1.3 1.4 2 2.5 2.6 2.7
------------------------------------------------------------------------------
1 Test TEST1 TEST2 TES3 NULL TEST4 NULL NULL NULL
有人能给我提供SQL pivot语句来获得上述输出吗
提前感谢。您可以使用动态查询来实现这一点
Create TABLE #Table1
([AssessmentID] nvarchar(50), [QuestionID] nvarchar(50), [Answer] nvarchar(50));
INSERT INTO #Table1
([AssessmentID], [QuestionID], [Answer])
VALUES
('1', '1.1', 'Test1'),
('1', '1.2', 'Test2'),
('1', '1.3', 'Test'),
('1', '1.4', 'Test1'),
('1', '2', 'Test2'),
('1', '2.3',null)
;
DECLARE
@cols AS NVARCHAR(MAX)='',
@sql AS NVARCHAR(MAX)='';
SET @cols = STUFF(
(SELECT N',' + QUOTENAME([QuestionID]) AS [text()]
FROM #Table1 AS Y
FOR XML PATH('')),
1, 1, N'');
print @cols
SET @sql = N'SELECT *
FROM #Table1
PIVOT(MAX([Answer]) FOR QuestionID IN(' + @cols + N')) AS P;';
EXEC sp_executesql @sql;
print @sql;
GO
drop table #table1
团队,任何人都可以提供我的解决方案,如果你在最早。