【发布时间】:2022-01-17 17:00:00
【问题描述】:
这是我的表格结构
结果
id ResultId CategoryId Total Attempted Score
----------------------------------------------------
1 8 1 30 25 20
2 8 2 30 30 19
3 8 3 30 27 21
4 7 1 20 15 10
5 7 2 20 20 15
类别
Id CategoryName
-----------------------
1 General
2 Aptitude
3 Technical
我想要以下格式的数据 对于 ResultId = 8
Id General Aptitude Technical Total
--------------------------------------------------
8 20 19 21 60
对于 ResultId = 7
Id General Aptitude Total
-------------------------------------
7 10 15 25
我需要帮助来获取上述格式的数据。
注意:最终获取的数据包含来自 Result 表的分数,但具有来自类别表的列名,并根据 Result 表中的 CategoryId。列名将是动态的
尝试了以下代码(仅用于测试)但没有用
DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(CategoryName)
FROM ( SELECT DISTINCT CategoryName
FROM [dbo].[Category] c) AS PivotExample
SET @SQLQuery =
N'SELECT DISTINCT ' + @PivotColumns + '
FROM [dbo].[Category] c
PIVOT( SUM(c.Id)
FOR CategoryName IN (' + @PivotColumns + ')) AS P'
EXEC sp_executesql @SQLQuery
【问题讨论】:
-
你写的代码在哪里?
-
我尝试使用 Pivot 但没有用。我已经更新了问题
-
你使用什么数据库?甲骨文? SQLServer ?...
-
我使用的是 SQL Server 2014
-
在您的代码中,您向我们展示了一个表格:DriveCategories。但是在您的问题中,您没有向我们显示该表中的列,仅显示 Category 和 Result ?
标签: sql pivot row sql-server-2014