转自http://www.cnblogs.com/ruanzuzhang/archive/2009/02/22/1395789.html
在同一个sql语句中写不同条件的Count数量 类似select count(1),count(2),count(3) from 表 每列都有不同条件的 count组成
其实有count很难实现
可以用sum 去实现它
例子如下
select xy, sum(case when jw_cljgh=1 then 1 else 0 end) as 留级,sum(case when jw_cljgh=2 then 1 else 0 end) as 复学 from xjgl,bjsjk where xjgl.bh=bjsjk.bh group by xy
所用到的表
表名: xjgl | |||||
概要说明: 学生违纪、异动信息表 | |||||
主键: (xsid、sj、jw_cljgh) | |||||
候选码:(xh、sj、jw_cljgh) | |||||
副键/外键: | |||||
| |||||
字段名 | 数据类型 | key | 能否为空 | 中文名称 | 资料来源 |
xsid | int(4) |
| 不能 | 学生标识号 |
|
xh | varchar(10) |
| 不能 | 学号 | 学号第1-2位为年级,3-4位为专业,第5位为层次(1研究生、2普通本科、3普通专科、4成教本科、5成教专科、6成教专升本、7成教高升专、8国际学院、9专升本),第6位为班级,7-9为序列号。一般学号的前6位为班号(有学籍异动的学生除外)。 |
xm | varchar(24) |
|
| 姓名 |
|
xn | varchar(4) |
| 不能 | 年度 | 2008、2009等 |
xq | int |
| 不能 | 学期 | 1、2、3、4 |
bh | varchar(8) |
|
| 当前所在班号 |
|
sj | datetime(8) |
| 不能 | 时间 | 违纪或异动下文时间 |
shij | varchar(1024) |
|
| 事件 |
|
jw_cljgh | varchar(2) |
| 不能 | 处理结果编号 | 01:休学 02:复学 03:转入 04:转出 05:留级 06:保留学籍 07:退学 08:停学 09:劝其退学 10:自动退学11:死亡 12:警告处分13:记过处分 14:记大过处分 15:留校察看 16:开除学籍 17:勒令退学 |
cljg | varchar(50) |
|
| 处理结果 |
|
cldw | varchar(30) |
|
| 处理单位 |
|
表名: 班级信息表(bjsjk) | |||||
概要说明:存放班级相关信息 | |||||
主键 | |||||
副键/外键 | |||||
| |||||
字段名 | 数据类型 | key | 能否为空 | 中文名称 | 资料来源 |
id | int(4) | Y | not | 表ID | 唯一 |
bh | varchar(10) |
| not | 班级编号 |
|
bjmc | varchar(50) |
|
| 班级名称 |
|
xy | varchar(20) |
|
| 所属单位名称 |
|
skxq | varchar(100) |
|
| 上课校区 | 1:中心校区 2:咸安校区 |
bjrs | Int(4) |
|
| 班级人数 |
|
xz | int(1) |
|
| 学制 | 3,4,5,6 |
jw_xybh | varchar(1) |
|
| 学院编号 | 部门信息表 |
sszybh | Varchar(10) |
|
| 所属专业编号 |
|
最后执行的结果
类似
留级 复学
医学院 104 4
计算机学院 5 35