Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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中的表上创建透视_Sql_Sql Server - Fatal编程技术网

需要在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

团队,任何人都可以提供我的解决方案,如果你在最早。