Sql server SQL Server数据库透视表
我有两张表,tbl_证据和tbl_测试结果 我希望使用pivot将eve_id作为列。但问题是我只需要不同的id,但表正在为同一id创建多行,并为另一列设置空值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 + ',
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函数。不确定它是否对你有帮助,但你可以试试。