在同一个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