求助一个统计的问题,高手们来帮帮忙
时间:2011-07-15
来源:互联网
比如现在有两张表(本来是4张表,为了简化问题,我合成为两张表来提问)
t1:班级表
bid 班级名称
1 1班
2 2班
3 3班
t2:班级开销账目
编号id bid(所属班级) s_type(花费类型) 花费钱数 日期
1 1 书 100 x年x月x日
2 1 笔 20 x年x月x日
3 1 书 40 x年x月x日
4 1 小刀 5 x年x月x日
5 1 书 130 x年x月x日
6 2 书 50 x年x月x日
7 2 笔 10 x年x月x日
大概就是这样,t2表罗列了日常开销,现在需要生成这样一个统计表(假设t2只有上面7条记录)
班级名称 书 笔 小刀
1班 270(100+40+130得出结果) 20 5
2班 50 10 0
3班 0 0 0
请各位大大帮忙忙了,多谢了
t1:班级表
bid 班级名称
1 1班
2 2班
3 3班
t2:班级开销账目
编号id bid(所属班级) s_type(花费类型) 花费钱数 日期
1 1 书 100 x年x月x日
2 1 笔 20 x年x月x日
3 1 书 40 x年x月x日
4 1 小刀 5 x年x月x日
5 1 书 130 x年x月x日
6 2 书 50 x年x月x日
7 2 笔 10 x年x月x日
大概就是这样,t2表罗列了日常开销,现在需要生成这样一个统计表(假设t2只有上面7条记录)
班级名称 书 笔 小刀
1班 270(100+40+130得出结果) 20 5
2班 50 10 0
3班 0 0 0
请各位大大帮忙忙了,多谢了
作者: haluomao 发布时间: 2011-07-15
select a.* from t1 a left join
(select bid,sum(if(s_type='书', 花费钱数,0)),
sum(if(s_type='笔', 花费钱数,0)),
sum(if(s_type='小刀', 花费钱数,0)) from t2 group by bid) b
on a.bid=b.bid
(select bid,sum(if(s_type='书', 花费钱数,0)),
sum(if(s_type='笔', 花费钱数,0)),
sum(if(s_type='小刀', 花费钱数,0)) from t2 group by bid) b
on a.bid=b.bid
作者: WWWWA 发布时间: 2011-07-15
SQL code
select t1.班级名称 ,sum(case when s_type='书' then 花费钱数 end) ,sum(case when s_type='笔' then 花费钱数 end) ,sum(case when s_type='小刀' then 花费钱数 end) from t1,t2 where t1.bid = t2.bid group by t1.班级名称
作者: rucypli 发布时间: 2011-07-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28