Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 Server数据库透视表_Sql Server_Database_Sql Server 2008_Pivot - Fatal编程技术网

Sql server SQL Server数据库透视表

Sql server SQL Server数据库透视表,sql-server,database,sql-server-2008,pivot,Sql Server,Database,Sql Server 2008,Pivot,我有两张表,tbl_证据和tbl_测试结果 我希望使用pivot将eve_id作为列。但问题是我只需要不同的id,但表正在为同一id创建多行,并为另一列设置空值 DECLARE @SQLQuery AS NVARCHAR(MAX) DECLARE @PivotColumns AS NVARCHAR(MAX) --Get unique values of pivot column SELECT @PivotColumns= COALESCE(@PivotColumns + ',

我有两张表,tbl_证据和tbl_测试结果

我希望使用pivot将eve_id作为列。但问题是我只需要不同的id,但表正在为同一id创建多行,并为另一列设置空值

DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)

--Get unique values of pivot column  
SELECT   
    @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(eve_id)
FROM 
    (SELECT DISTINCT eve_id 
     FROM [dbo].[tbl_evidence] 
     WHERE cls_id=13) AS evidence

SELECT @PivotColumns

SET @SQLQuery =  'SELECT reg_id, '+   @PivotColumns + 'FROM tbl_evidence join tbl_test_result on tbl_evidence.eve_id= tbl_test_result.test_id 
    PIVOT( max(test_marks) FOR eve_id IN (' + @PivotColumns +')) AS P where cls_id=13 order by reg_id'

EXEC sp_executesql @SQLQuery
[![我现在得到的结果为空值][1][1]

reg_id  6   13  14  27   33    37    45   48    50
----------------------------------------------------
979    NULL NULL 9  NULL NULL  NULL  NULL NULL  NULL
我想要这样的结果

reg_id  6   13  14  27  33  37  45  48  50
--------------------------------------------    
979     18  18  9   16  6   36  18  15  0

如果您提供数据可能会有所帮助,对吗?我曾经编写过一个用于创建动态透视的SQLCLR函数。不确定它是否对你有帮助,但你可以试试。