有一个表
Student
------------------
name    sex    age想通过两个不同的条件查询符合条件的学生人数
比如年龄大与20岁的人数
和女生人数
然后将这两个人数合并起来,拼成一个字符串如果写两个sQl是很简单的,现在是要通过一条SQl实现
显示结果是:  女生-n人,超龄m人,这个样式
(样式不重要,关键是两条SQL语句怎么拼成一条)谢谢

解决方案 »

  1.   


    SELECT sum(DECODE(SEX,'女',1,0)) 女生人数,sum(case when age>20 then 1 else 0 end) 超龄人数 FROM STUDENT
      

  2.   

    谢谢楼上,但是我这个语句是要跨数据库的,不能用DECODE
    还有别的方法么?
      

  3.   

    是我没说清楚,其实限定条件是在另一张表里的
    T
    ------------
    id    age      result
    1     20       
    2     21 
    3     22
    ....
    这里的age就是限定条件,比如21,就是查询21岁的女生人数,22就查询22岁的女生人数
    人数放在result里我这样写
    update T t
    set result=
    (
    select a||b from (
    (select count(*) as a from student where sex='女' and t.age = student.age),
    (select count(*) as b from student where sex='女')
    )
    )但是提示t.age无效
    请帮我看看,谢谢了
      

  4.   

    SELECT SUM(DECODE(SEX,'女',1,0)),SUM(CASE WHEN SEX='女' AND AGE>20 THEN 1  ELSE 0 END) FROM STUDENT;       
      

  5.   

    俩表咋关联.总不能用age关联吧?那不为啥意义?
      

  6.   

    在oracle里面两个select语句可以用uion(合并)起来!
    如:
      

  7.   

    楼主是不是需要将T表中的results按照students表中的数据进行统计更新?测试了一下下面的语句可能是楼主要的
    Update T m set m.result=
    (select a from
    (select student.age as b,count(*) as a from student,T m where student.sex='女' and m.age=student.age
    group by student.age)
    where b=m.age
    }