两个select怎么合并?

yoci 2009-03-17 12:52:07
有一个表
Student
------------------
name sex age

想通过两个不同的条件查询符合条件的学生人数
比如年龄大与20岁的人数
和女生人数
然后将这两个人数合并起来,拼成一个字符串

如果写两个sQl是很简单的,现在是要通过一条SQl实现
显示结果是: 女生-n人,超龄m人,这个样式
(样式不重要,关键是两条SQL语句怎么拼成一条)

谢谢
...全文
372 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chqchq 2009-03-18
  • 打赏
  • 举报
回复
楼主是不是需要将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
}
叶子 2009-03-18
  • 打赏
  • 举报
回复
两个表设计的好像有点问题。
yf520gn 2009-03-17
  • 打赏
  • 举报
回复

SELECT sum(DECODE(SEX,'女',1,0)) 女生人数,sum(case when age>20 then 1 else 0 end) 超龄人数 FROM STUDENT
yoci 2009-03-17
  • 打赏
  • 举报
回复
修改一下
条件改为:女生人数 || 年龄大于20的女生人数
cheng_fengming 2009-03-17
  • 打赏
  • 举报
回复
在oracle里面两个select语句可以用uion(合并)起来!
如:
fengfan 2009-03-17
  • 打赏
  • 举报
回复
俩表咋关联.总不能用age关联吧?那不为啥意义?
yjdfff 2009-03-17
  • 打赏
  • 举报
回复
SELECT SUM(DECODE(SEX,'女',1,0)),SUM(CASE WHEN SEX='女' AND AGE>20 THEN 1 ELSE 0 END) FROM STUDENT;
yoci 2009-03-17
  • 打赏
  • 举报
回复
是我没说清楚,其实限定条件是在另一张表里的
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无效。。。
请帮我看看,谢谢了
yf520gn 2009-03-17
  • 打赏
  • 举报
回复
跨数据库也不影响呀,DBLINK?
yoci 2009-03-17
  • 打赏
  • 举报
回复
谢谢楼上,但是我这个语句是要跨数据库的,不能用DECODE。。。
还有别的方法么?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧