SQL中的数据透视表

时间:2014-01-14 07:09:15

标签: asp.net sql sql-server

我正在尝试使用动态列从视图填充数据透视表但不确定如何进行此处 - 这是表数据示例 -

question | userid | assessment_date| score
---------------------------------
Q1 1 2014-01-12 12:16:26.870 40
Q1 1 2014-01-14 12:28:38.943 40
Q1 1 2014-01-03 11:13:35.527 85
Q1 2 2014-01-09 11:16:19.450    20
Q1 2 2014-01-11 12:11:18.720    20
Q10 1 2014-01-14 12:28:38.943   70
Q10 1 2014-01-03 11:13:35.527   35
Q10 1 2014-01-11 12:11:18.720   35
Q10 2 2014-01-12 12:16:26.870   35
Q11 2 2014-01-11 12:11:18.720   28
Q11 2 2014-01-12 12:16:26.870   28
Q11 2 2014-01-14 12:28:38.943   28
Q12 2 2014-01-12 12:16:26.870   24
Q12 2 2014-01-11 12:11:18.720   64

现在我想显示十大问题,得分最高 -

  question | 11-01-2014 | 12-01-2014 | 14-01-2014
  Q1 | 70 | 60 | 65
  Q3 | 85 |45 | 75
  Q7 |87 |54 | 63

我很抱歉代码格式不好,希望它能说明我想要实现的目标。

抱歉问题基于时间戳是唯一的,我错过了一个链接到用户表的列userid。

提前致谢。

1 个答案:

答案 0 :(得分:1)

像这样的东西应该让你开始,它是用透视表的一般格式编写的,但它是空气代码,所以你可能需要改变它。

SELECT question, '2014-01-11','2014-01-12','2014-01-14' 
FROM
(SELECT question, assessment_date, score FROM myTableName) AS SourceTable
PIVOT
(
SELECT SUM(score) as SummedScore,
FOR assessment_date IN ('2014-01-11','2014-01-12','2014-01-14')
) AS PivotTable