日期:2014-05-17  浏览次数:20528 次

关于求平均值的问题,高手请进


上图就是表的结构,和现在表有的数据

我想完成的查询就是:
根据现在有的数据中的topics(问题题目)的topics_scores(问题得分)
算出每个老师(Sid)的每倒题目的平均分
这里的数据有10个题目,因为有两个学生投票了,所以topics(问题题目)有20项了

想输出的结果大概就是这样
topics1(问题题目1)topics2(问题题目2)topics3(问题题目3)topics4(问题题目4)topics5(问题题目5)...(题目10)
问题1平均分 问题2平均分 问题3平均分 问题4平均分 问题5平均分 ...(10平均分)

------解决方案--------------------
SQL code
DECLARE @sql VARCHAR(max)
SELECT @sql=ISNULL(@sql+',','')+QUOTENAME([topics]) FROM tb 
GROUP BY [topics]
EXEC('
SELECT * FROM 
(
    SELECT topics,topics_scores,tid FROM tb 
)a
PIVOT (AVG([topics_scores]) FOR [topics] IN('+@sql+')) b
')