select
班级,
优=sum(case when 成绩='优' then 1 else 0 end),
良=sum(case when 成绩='良' then 1 else 0 end),
中=sum(case when 成绩='中' then 1 else 0 end),
差=sum(case when 成绩='差' then 1 else 0 end)
from
学生表A
group by
班级
班级,
优=sum(case when 成绩='优' then 1 else 0 end),
良=sum(case when 成绩='良' then 1 else 0 end),
中=sum(case when 成绩='中' then 1 else 0 end),
差=sum(case when 成绩='差' then 1 else 0 end)
from
学生表A
group by
班级
解决方案 »
- 帮忙优化如下sql谢谢!
- SQL 事务问题不锁表
- 初学数据库,希望先从整体上有个了解,请大家指教
- 怎么生成一个sql来完全描述我的数据库,并且把主键,关系,数据都描述出来,运行sql就可以还原数据库!
- 优化SQL
- sql where后的查询参数为List<int>怎么写?
- 急需做一个数据库如下
- SQL Server 2005 日志删除和日志文件限制
- 一个问题:我在表中插入记录后,如何知道这条记录的主键(ID值),
- 救命啊,多个分店的数据库怎么把数据汇合到一起啊?
- 如何直接解析非空autoval字段
- 大家看看下面的语句为什么系统会说 [Microsoft][ODBC SQL Server Driver]语法错误或违反访问规则
sum(case when 成绩='优' then 1 else 0 end) as 优,
sum(case when 成绩='良' then 1 else 0 end) as 良,
sum(case when 成绩='中' then 1 else 0 end) as 中,
sum(case when 成绩='差' then 1 else 0 end) as 差
from 表A
group by 班级
set @s='select 班级'
select @s=@s+',['+成绩+']=sum(case when 成绩='''+成绩+''' then 1 else 0 end)'
from 学生表 group by 成绩
set @s=@s+' from 学生表 group by 班级'
exec(@s)
declare @s varchar(2000)
set @s='select 班级'
select @s=@s+',['+成绩+']=sum(case when 成绩='''+成绩+''' then 1 else 0 end)'
from
学生表A
group by
成绩
set @s=@s+' from 学生表 group by 班级'
exec(@s)