select b.id,a."status=0数目",b.总数 from
(select id ,count (*) "status=0数目" from tb where status =0 group by id) a,
(select id , count (*) 总数 from tb group by id) b
where a.id(+)=b.id
(select id ,count (*) "status=0数目" from tb where status =0 group by id) a,
(select id , count (*) 总数 from tb group by id) b
where a.id(+)=b.id
解决方案 »
- 求解 java.sql.BatchUpdateException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
- 关于rman备份中的自动归档问题
- 查询语句排序问题 按存入数据库的顺序排序
- 很菜的问题 sql 谢谢!
- 抽象数据类型,更高深问题???
- rman 急!!!!!!!!!!!!!!!11
- oracle 存储过程测试
- 请教oracle9i在AIX上的奇怪问题
- 通过临时表生成查询结果。多人同时访问时如何防止临时表被清空?
- 解决"不能在 UTF8 和 UCS2 之间转换"的问题??
- Oracle BLOB字段(我存的是图片)怎么更新不了啊?
- 有没有范围-范围分区,能给出示例代码吗
假如表结构如下:
表名:tb
id status time
100 0 xxx
100 1 xxx
101 1 xxx
100 1 xxx
101 1 xxx
100 1 xxxselect语句如下:
select b.id,a.状态为零数,b.总数 from
(select id ,count (*) as 状态为零数 from tb where status =0 group by id) a,
(select id ,count (*) as 总数 from tb where status =0 group by id) b
where a.id(+)=b.id 第一句的结果是:
id count(*)
100 1
(注:101的没有!!)
第二句的结果是:
id count(*)
100 4
101 2因为第一句查询结果中,没有101的记录!!
所以结果会是只有一行:
id 状态为零数 总数
100 1 4但是现在想构造如下的查询结果,怎么实现那:
id 状态为零数 总数
100 1 4
101 0 2
实际问题中,我是有5种select语句。
id值100-116
用这种发法,每一种select出来的数目并不完全一样。
怎么保证
结果像
id 状态为零数 总数
100 1 4
101 0 2
。
。
。
。
。
。即,第二行101 的结果状态为零列 置成 0,怎么实现那
id status time
100 0 xxx
100 1 xxx
101 1 xxx
100 1 xxx
101 1 xxx
100 1 xxx