有点小问题,因为题目是随机从题库里面抽出来的,就是投票的时候,投了别的题目,而该Tid没有分数的话
平均分就变成NULL了,但是题目却还是显示了出来。
DECLARE @sql VARCHAR(max),@col_name VARCHAR(max)SELECT @sql=ISNULL(@sql+',','')+QUOTENAME([topics]) FROM tb  
GROUP BY [topics]SELECT @col_name=ISNULL(@col_name+',','')+'CAST('+QUOTENAME([topics])+' AS DECIMAL(9,2)) AS '+QUOTENAME([topics]) FROM tb 
GROUP BY [topics]
EXEC('
SELECT tid,'+@col_name+' FROM 
(
    SELECT topics,topics_scores=topics_scores*1.0,tid FROM tb 
)a
PIVOT (AVG([topics_scores]) FOR [topics] IN('+@sql+')) b
')
而且这个源码也看得不是太懂能不能挑重点解释一下。

解决方案 »

  1.   

    你是哪个点看不懂,sql语句拼接看不懂?还是行列转换pivot用法看不懂?
      

  2.   


    基本上上都看不懂,小弟搞ASP.net的
    能不能每一句后面加个注释,粗略说一下大概是什么意思。
    谢谢
    顺便附上数据库的截图
      

  3.   


    基本上上都看不懂,小弟搞ASP.net的
    能不能每一句后面加个注释,粗略说一下大概是什么意思。
    谢谢
    顺便附上数据库的截图
      

  4.   

    我在页面显示过滤掉NULL了,只有这样解决了
    但是SQL语句我是没看懂,能不能解释一下