要求:一张表字段日期、帐号、取款金额,现需要从中找出从1月1日到31日中,当日取款金额总和超过1000的每条记录。
如果是总金额的话,那就用select rq,zh,sum(qkje) as qkje1 from abc group by rq,zh having sum(qkje)>1000.
但我现在要求显示的是每笔记录,请问怎么写该语句,用in的语句好象也不行...

解决方案 »

  1.   

    用select * from abc where rq in(select rq,zh,sum(qkje) as qkje1 from abc group by rq,zh having sum(qkje)>1000)这个语句出错提示:在不使用主查询的情况下,存在保留字的情况下,编写一个子查询,他可以返回多个的字段。修改保留字的sql语句可以只要求返回一个字段
      

  2.   

    把in子句中的having子项的sum(qkje)改为qkje1如何?
      

  3.   

    改了也是不行的,having里面是不能改成qkje1的。
      

  4.   

    select * from abc where zh in(select zh from abc group by rq,zh having sum(qkje)>1000)
      

  5.   

    楼上的兄弟,还是不对啊。表里面的数据如下
    rq             zh         qkje
    20030519       9001        100.00        1
    20030519       9001        950.00        2 
    20030519       9003        400.00        3
    20030519       9003        300.00        4
    20030520       9001        1500.00       5 
    20030520       9001        200.00        6
    如果按照你的方法,得到的还是6条记录,现在要求得到的是发生总额超过1000的,就是1、2、5、6的记录查找出来,如何写。
      

  6.   

    select a.* from tablename as a,(select zh from tablename group by zh having sum(qkje)>1000) as b
    where a.zh=b.zh
      

  7.   

    不应该呀,你看看下面的子查询返回几条记录:
    select zh from abc group by rq,zh having sum(qkje)>1000
      

  8.   

    谢谢大家帮忙,该语句已经写出具体是:
    select a.date as date1,a.amnt as amnt1,a.acno as acno1,b.acnm as acnm1 from t_hisvouch as a,
    t_acmain as b where a.acno=b.acno and (a.itno='02111' or  a.itno='00101' or  
    a.itno='02012' ) and a.date>='20030514'and date +a.acno in(select date + acno from 
    t_hisvouch group by date + acno having sum(amnt)>1000)