当前位置: 代码迷 >> Oracle管理 >> 依据已有一组数据去表里统计
  详细解决方案

依据已有一组数据去表里统计

热度:103   发布时间:2016-04-24 04:26:27.0
根据已有一组数据去表里统计
根据一组已有数据。
在单子表bill中有userid字段
现在是知道有一组userid的数据,需要去查询统计bill中每个userid有多少单子
可以用分组来统计。
但是问题来了,要是bill表中没有userid的话,就应该为null或者0
求大神给个思路。最好给个完整SQL呵呵。。。
------解决方案--------------------
select  userid,decode(useid,null,0,count(*))  from bill
group by userid

------解决方案--------------------

select tab.userid, decode(bill.useid, null, 0,count(*))
  from bill, tab
 where bill.userid(+) = tab.userid
 group by tab.userid

这对吗?

最好,写点数据示意一下。
------解决方案--------------------
引用:
select tab.userid, decode(bill.useid, null, 0,count(*))
  from bill, tab
 where bill.userid(+) = tab.userid
 group by tab.userid

这对吗?

最好,写点数据示意一下。
左右连接写错了吧

引用:
select tab.userid, decode(bill.useid, null, 0,count(*))
  from bill, tab
 where bill.userid(+) = tab.userid
 group by tab.userid

这对吗?

最好,写点数据示意一下。
你这个明显都不是group by 表达式。。。 应该是group by tab.userid,bill.userid 吧
------解决方案--------------------
看了题意  连接没错
 但是group by 应该是错了的
------解决方案--------------------
tab不是表  你不能做成个临时表?
------解决方案--------------------
引用:
Quote: 引用:

tab不是表  你不能做成个临时表?


临时表?
我的数据是后来动态程序中传进来的。
没有了解过临时表啊。
你的是做个真实的表作为临时表?
 条件不允许
那你就做个list 循环一次一次获取
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

tab不是表  你不能做成个临时表?


临时表?
我的数据是后来动态程序中传进来的。
没有了解过临时表啊。
你的是做个真实的表作为临时表?
 条件不允许
那你就做个list 循环一次一次获取


无语,那还需要问么?
都考虑过了。
不允许创建表 ,那你就把这list的数据也插到 bill表里面,用个字段标示一下  行不行的?然后下次再作比较时,把之前做过标示的都删掉,再重新插入比较
------解决方案--------------------
是,group by,少了个字段。

楼主的意思还是再说明白点。

0、条件不容许=?建表无权限?
1、什么不想一条一条做?目的=?缺点=?
2、都想什么方法了,为什么不行?
3、那个传过来的所谓tab数据量多大?bill表多大?有时间制约?
4、动态程序中传进来的,还要完整sql,是想用in 、with形成sql查?就像如下,
select * from bill,(select 'a' userid from dual union select 'a' userid from dual union ...)

呵呵,到现在还是不明白。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

tab不是表  你不能做成个临时表?


临时表?
我的数据是后来动态程序中传进来的。
没有了解过临时表啊。
你的是做个真实的表作为临时表?
 条件不允许
那你就做个list 循环一次一次获取


无语,那还需要问么?
都考虑过了。
不允许创建表 ,那你就把这list的数据也插到 bill表里面,用个字段标示一下  行不行的?然后下次再作比较时,把之前做过标示的都删掉,再重新插入比较


呵呵,你太弱了

你这么说不好吧,好歹人家在热心帮忙出主意呀
------解决方案--------------------
要代码,没有具体需求和运行环境。

要SQL,没有建表语句和基本数据。

这种煞笔问题就该一直挂着。
------解决方案--------------------
select  userid,count(*)  from bill group by userid
数据取出来,在程序里面比较,
按照你的那组数据,没有的userid再添加0,你想sql一步到位,按照你的要求,那是不可能的。
  相关解决方案