COUNT(*) 结果为空

peter_xiaoao 2010-10-25 09:02:13
各位有碰到过这种情况吗?

SELECT
COUNT(*) AS CASE_COUNT
, tb004.FILD5
FROM tb006
, tb004
WHERE tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00'

AND tb006.FILD1 = tb004.FILD1
AND tb006.FILD2 = tb004.FILD2
AND tb006.FILD3 = tb004.FILD3
AND tb006.FILD4 = tb004.FILD4
AND tb006.FILD5 = tb004.FILD5
group by tb004.FILD5

有数据的时候结果很正常,没数据的时候它不返回0,返回空,我用decode转都没用,求教~~~
能帮我我返回0吗?
分不多,昨天押宝全输了。。。。
...全文
552 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
you896 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 peter_xiaoao 的回复:]

回14楼,只要有一条数据满足
tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00' ,它的分组就能实现,哪怕分组结果都是零

tb004.FILD5 num
-------------- ……
[/Quote]
呵呵,现学现卖的~
peter_xiaoao 2010-10-25
  • 打赏
  • 举报
回复
回14楼,只要有一条数据满足
tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00' ,它的分组就能实现,哪怕分组结果都是零

tb004.FILD5 num
-------------- ------------
00 0
01 0
77 0
02 0

但是,当你一条数据都没有的时候,是count不出来的。
所以你的方法还是很有效的!!
you896 2010-10-25
  • 打赏
  • 举报
回复
SELECT
tb004.FILD5,
sum(case when tb006.FILD1 = tb004.FILD1
AND tb006.FILD2 = tb004.FILD2
AND tb006.FILD3 = tb004.FILD3
AND tb006.FILD4 = tb004.FILD4
AND tb006.FILD5 = tb004.FILD5 then 1 else 0 end)CASE_COUNT
FROM tb006 , tb004
where tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00'
group by tb004.FILD5

不知道行不行。。。
peter_xiaoao 2010-10-25
  • 打赏
  • 举报
回复
谈谈我的理解吧,当你以tb004.FILD5分组时,就相当于你把你的检索结果,除以tb004.FILD5来得到每一组
的值。但是,当tb004.FILD5为空时,也就是说你在以一个空来分组,那结果就相当于一个数除以0,是一个无限值。这个时候你无论怎么count都是没有意义的。。。

不知道这样理解对不对。
you896 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 peter_xiaoao 的回复:]

7楼说的方法在能检索到数据的情况下是能判断的,但如果没有数据,count就用不了了。
[/Quote]
可以啊。你用sum(case when )的话没有数据就是0啊,我那个帖子里面他们发的方法我试过了,确实将满足条件个数为0的id的count(0)显示为0,或者用别人说的外连接也可以吧
peter_xiaoao 2010-10-25
  • 打赏
  • 举报
回复
7楼说的方法在能检索到数据的情况下是能判断的,但如果没有数据,count就用不了了。
  • 打赏
  • 举报
回复
--如果你的需求是像我的例子的话
SQL> select dname,count(ename)
2 from emp
3 ,dept
4 where emp.deptno=dept.deptno
5 group by dname;

DNAME COUNT(ENAME)
-------------- ------------
ACCOUNTING 3
RESEARCH 5
SALES 6

SQL> ed
已写入 file afiedt.buf

1 select dname,count(ename)
2 from emp
3 ,dept
4 where emp.deptno(+)=dept.deptno
5* group by dname
SQL> /

DNAME COUNT(ENAME)
-------------- ------------
ACCOUNTING 3
NANCHANG 0
OPERATIONS 0
RESEARCH 5
jiujiang 0
SALES 6
nanchang 0

已选择7行。
--你可以用下面的方法试试
SELECT
COUNT(*) AS CASE_COUNT
, tb004.FILD5
FROM tb006
, tb004
WHERE tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00'

AND tb006.FILD1 = tb004.FILD1
AND tb006.FILD2 = tb004.FILD2
AND tb006.FILD3 = tb004.FILD3
AND tb006.FILD4 = tb004.FILD4
AND tb006.FILD5(+) = tb004.FILD5
group by tb004.FILD5
心中的彩虹 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 peter_xiaoao 的回复:]
各位有碰到过这种情况吗?

SELECT
COUNT(*) AS CASE_COUNT
, tb004.FILD5
FROM tb006
, tb004
WHERE tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00'

AND tb006.FIL……
[/Quote]



SELECT
COUNT(nvl(tb004.FILD5,0)) AS CASE_COUNT
, nvl(tb004.FILD5,0)
FROM tb006
, tb004
WHERE tb006.FILD1 = '1'
AND tb006.FILD2 = '11'
AND tb006.FILD3 = '223'
AND tb006.FILD4 = '00'

AND tb006.FILD1 = tb004.FILD1
AND tb006.FILD2 = tb004.FILD2
AND tb006.FILD3 = tb004.FILD3
AND tb006.FILD4 = tb004.FILD4
AND tb006.FILD5 = tb004.FILD5
group by nvl(tb004.FILD5,0)









you896 2010-10-25
  • 打赏
  • 举报
回复
我觉得楼主可以来看看我发的这个帖子,已经被别人解决了,希望对你有帮助。
http://topic.csdn.net/u/20101025/09/752283dc-d89a-410e-9db6-b3d6bd7f80d2.html?303153174
you896 2010-10-25
  • 打赏
  • 举报
回复
。。这个也是我关心的问题。。我也遇到了,不会解决啊
zkl516321905 2010-10-25
  • 打赏
  • 举报
回复
楼主有这个tb004.FILD5分组,如果分组没有记录肯定是null的,试着把这个去掉,前边查询的时候也不要这个tb004.FILD5,返回的应该就是0了。
Phoenix_99 2010-10-25
  • 打赏
  • 举报
回复
当然是受group by 影响了,
如果是0的话,就别加group by了
peter_xiaoao 2010-10-25
  • 打赏
  • 举报
回复
是不是受group by 影响啊?
peter_xiaoao 2010-10-25
  • 打赏
  • 举报
回复
这个方法我也试过了,跟decode一样,转不过来
gelyon 2010-10-25
  • 打赏
  • 举报
回复
Nvl(COUNT(*),0) AS CASE_COUNT

17,082

社区成员

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

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