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

PIVOT行转列问题,高手进
行转列怎么显示内容?而不是统计数量
比如说成绩表:姓名,考试月份,科目,成绩:
name month subject score
张三 2012-09 数学 80
张三 2012-09 语文 30
张三 2012-09 英语 30
李四 2012-09 英语 45
李四 2012-09 语文 34
张三 2012-10 化学 10
王五 2012-10 物理 30

现在只能够统计:
 select * from 
 (select * from exam) p PIVOT( max(score) for subject in ([数学],[语文],[英语],[物理],[化学]))
  as pvt

=========================================================
name month 数学 语文 英语 物理 化学
李四 2012-09 NULL 34 45 NULL NULL
张三 2012-09 80 30 30 NULL NULL
王五 2012-10 NULL NULL NULL 30 NULL
张三 2012-10 NULL NULL NULL NULL 10
=========================================================
如果成绩是字符串呢,这个效果如何实现:
name month 数学 语文 英语 物理 化学
李四 2012-09 NULL 很菜 一般 NULL NULL
张三 2012-09 很好 很好 较差 NULL NULL
王五 2012-10 NULL NULL NULL 很菜 NULL
张三 2012-10 NULL NULL NULL NULL 很菜

------解决方案--------------------
好像用max函数也能实现,其他都不用变