sum(case 星期号='1' then 1 else 0 end)星期一
解决方案 »
- ----绝对难题(以我的能力看),留给高手解答。求视图------
- 高分求解Unknown Column In Where Clause错误mysql5
- 关于SQL行记录之间的匹配
- 有关数据库应用方面的问题
- 根据聚集索引查询出的顺序
- myql事件调度问题 急!!! O(∩_∩)O谢谢
- SQL语法错误,请大家帮助看一下谢谢!
- 在sql server2000中怎么把新建数据库中的系统表隐藏
- 数据库恢复的问题,急用!
- javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.的问题
- SQL Server 2005登录问题
- 请教!请教!课程表的数据库的建立
(
教师号 int not null,
星期号 char(2) not null,
是否有课 char(4) not null
)
insert into tb
values (1,'2','有')
insert into tb
values (1,'3','有')
insert into tb
values (2,'1','有')
insert into tb
values (3,'2','有')
insert into tb
values (1,'2','有')
select 教师号,
sum(case 星期号 when '1' then 1 else 0 end) '星期一',
sum(case 星期号 when '2' then 1 else 0 end) '星期二',
sum(case 星期号 when '3' then 1 else 0 end) '星期三'
From tb
group by 教师号 drop table tb/*
教师号 星期一 星期二 星期三
----------- ----------- ----------- -----------
1 0 2 1
2 1 0 0
3 0 1 0(所影响的行数为 3 行)
*/
sum(case 星期号 when '2' then 1 else 0 end) '星期二',
sum(case 星期号 when '3' then 1 else 0 end) '星期三'
可以稍微和我解释下这里吗? 这里是我看你发的文章里面 最没有搞的太清楚的地方,这里也算解这类题目的关键吧
为什么 then 1 这样就可以得到总数为2的这个结果呢
create table tb
(
教师号 int not null,
星期号 char(2) not null,
是否有课 char(4) not null
)
insert into tb
values (1,'2','有')
insert into tb
values (1,'3','有')
insert into tb
values (2,'1','有')
insert into tb
values (3,'2','有')
insert into tb
values (1,'2','有')
select 教师号,
sum(case 星期号 when '1' then 1 else 0 end) '星期一',
sum(case 星期号 when '2' then 1 else 0 end) '星期二',
sum(case 星期号 when '3' then 1 else 0 end) '星期三'
From tb
where 是否有课 = '有'
group by 教师号 drop table tb/*
教师号 星期一 星期二 星期三
----------- ----------- ----------- -----------
1 0 2 1
2 1 0 0
3 0 1 0(所影响的行数为 3 行)
*/
判断到星期号为1则记录为1次,否则为0,
判断到星期号为2则记录为1次,否则为0,
判断到星期号为3则记录为1次,否则为0.
最后按教师号分组求和.如果是max
则为最后按教师号分组取最大.如果没组只有一条记录也得用max,这是为了满足分组加的个max而已.
现在你这样一说 就清楚多了
dawugui 万分感谢你!!!
你应该改名 haowugui 呵呵