收录日期:2019/10/22 14:30:02 时间:2016/06/05 16:42:07 标签:基础类
表:test1 班级编号(id) 姓名(name) 类别编号(lbbh) 年龄(age)
      如:001  张三  01 30
 001  李四  02 20
 001  王五  01 10
          002   李明 01 30
表:test2 类别编号(lbbh) 类别名称(lbmc)
         01             高级
         02             中级
现在要得到如下结果:
班级编号 高级 中级
001      40   20
002      30   0
这个SQL应该如何写
40哪里来的???
规则是什么?
也就是,统计每个班级的高级和中级的总教龄
可以不用test2的数据作表头,只要数据
这个可不简单
select a.count1, b.count2,a.id from (select count(*) as count1 where lbbh = '01' group by id) as a left join (select count(*) as count2 where lbbh = '02' group by id) as b on a.id = b.id
我以为是人数?!总教龄是哪来的?!你的表只有年龄
年龄写错了,是教龄,不好意思
goodboyws(深夜不眠者):你的不行哦,能不能写清楚点,谢谢
这个就可以
select a.sum1, b.sum2,a.id from (select sum(age) as sum1 where lbbh = '01' group by id) as a left join (select  sum(age) as sum2  where lbbh = '02' group by id) as b on a.id = b.id
goodboyws(深夜不眠者):老兄,你表名都不用吗,还是不行,请指点一下,谢谢
不建议使用一个sql语句实现,除非表test2永不改变,不然如果添加一条记录或者类别编号修改一下就会产生连锁反应.
这种情况一般使用sql产生一个竖直方向数据集,这个很简单,group by一下然后left join test2
就可以了,然后在程序中把他转换为横向,这样即使添加一个类别,程序可以保持不动
select a.sum1, b.sum2,a.id from (select sum(age) as sum1 from test1 where lbbh = '01' group by id) as a left join (select sum(age) as sum2 from test1 where lbbh = '02' group by id) as b on a.id = b.id
人蛮多的啊~~
goodboyws(深夜不眠者):老兄,有语法错误啊,无法运行
goodboyws(深夜不眠者)的句子在子表里还要加上id
select sum(age) ---> select id, sum(age)
楼上说得对,呵呵

请教prototype.js的问题 每天散分,以示存在@2010-01-22 我的新c语言的群,欢迎加入 GOOGLE还不如走了--IT造就了中国青年的卖国心理 100分跪求 虐熊猫方法!!!! java 怎么将拼音转换为汉字? Access导出Excel单元格设置问题(第二个问题)---附代码 string 转换 pointer? c# winform 可以根据数据库表内容动态生成checkbox 控件吗? 防止mdb数据库被下载。二进制转换的问题 用匿名类型填充一个DataTable. 求一个动态建表的问题 sony本本装了WIN7后摄像头用不了啦高手指点下!!! 一个关于wm_copydata的问题 不使用服务器控件 linq + mvc开发模式 内存映射文件为什么能提高处理文件的速度?其技术细节是怎样的? rdlc报表和水晶报表有哪些区别?哪个更好些? VB高手,请问如何将txt内的内容互换? 100元解决 excel导入sql2005出错的问题 看到的请进来帮解释~~一条语句~~~谢谢.不会花太长时间~~~~ 从C++到JAVA,大侠们指点指点! 如何让程序生成之后就加壳 笔记本开机显示问题,闪屏 请问,如何判断Jframe是否出于最前端? VB_报表汇总! 关于调用edatabase.dll文件的问题 window 7环境下取服务器IP错误 JSTL 自定义函数 空参数 有错误提示 如何解决 MDK怎么有点搓啊? 恳求请高手指点-关于heritrix