日期:2014-05-20  浏览次数:20618 次

请教一个反话费的数据库问题
是这样的,我的一个朋友突然问我这么一个问题,怎么把指定日期交过两次话费的名单列出来,至于怎么返话费不用管。数据库结构如下:
sell_no:订单编号
name:姓名
phone:手机号
amount:金额
date:充值日期
上边就这些有效字段,假如数据(数据纯属虚构,如有*,纯是巧合)如下:
sell_no name phone amount date
00000000001 李晓红 15822533496 50 2011-10-24 08:09:23
00000000002 李晓红 15822533496 60 2011-10-24 08:15:34
00000000003 李晓红 15822533496 30 2011-10-24 08:20:56
00000000004 杨 轩 18200000000 100 2011-10-24 07:59:43
00000000005 杨 轩 18200000000 200 2011-10-24 08:11:11
00000000006 柳梦璃 18211111111 50 2011-10-24 09:09:46
00000000007 韩菱纱 18222222222 50 2011-10-24 08:09:45
00000000008 云天河 18333333333 50 2011-10-24 08:09:25
把以上数据今天交过2次话费的数据取出来,要取的结果如下:
00000000001 李晓红 15822533496 50 2011-10-24 08:09:23
00000000002 李晓红 15822533496 60 2011-10-24 08:15:34
00000000003 李晓红 15822533496 30 2011-10-24 08:20:56
00000000004 杨 轩 18200000000 100 2011-10-24 07:59:43
00000000005 杨 轩 18200000000 200 2011-10-24 08:11:11
因为今天李晓红和杨轩交过两次以上话费,所以有他们的数据,而柳梦璃,韩菱纱,云天河只交过一次,所以没他们的数据。
就这个意思,请问各位有没有解决的办法呢???


------解决方案--------------------
having count(name)=2 剩下自己发挥吧
------解决方案--------------------
have a try
SQL code
select a.sell_no, a.name, a.phone, a.amount, a.date
  from your_table
 where to_char(a.date, 'YYYY-MM-DD') = '2011-10-24'
   and (select count(1) from your_table where phone=a.phone and to_char(date, 'YYYY-MM-DD') = to_char(a.date, 'YYYY-MM-DD')) > 1

------解决方案--------------------
搞定了就好,我写也会是grope by .. having
------解决方案--------------------
就Having就好啦!