求报表统计Sql查询语句

数据库为sqlserver2005

表A

student       type             scores

张三              语文                80

张三              数学                70

李四              语文                 60

李四              数学                 90

......

要展示的效果为:

学生名              语文             数学

张三                  80              70

李四                  60              90

......

要从这张表中得到这个展示效果的sql要怎么写?如果一张表不行,应该怎么加表?


温温酱
浏览 1019回答 2
2回答

宝慕林4294392

DECLARE  @sql VARCHAR(8000)      set @sql ='select student AS [学生名] '      select @sql = @sql + ',MAX(CASE type WHEN '''+type+''' THEN scores END) ['+type+']'     from (SELECT  DISTINCT  type   FROM  A  ) as a     exec(@sql+'  from A group by student order by student desc')

ITMISS

select a.student as 学生名,max(a.数学) as 数学 ,max(a.语文) as 语文 from (select student ,' '  as 数学,scores as 语文   from 表A  where type = '语文'unionselect student ,scores  as 数学  ,' '   as 语文  from 表A  where type = '数学') agroup by a.student
打开App,查看更多内容
随时随地看视频慕课网APP