表a:
工号    交费金额    时间
001     10      2006-1
001     10      2006-2
。。
002     0       2006-1
002     0       2006-2
002     12      2006-3
002     0       2006-4需要的结果是2006年的交费次数:
工号    交费次数   
001     12
002     10问题的关键是:如果一月份交过,其他月份没有交,那视为每月都交了,所有002的统计结果是10,不是单纯的不是零就属于交,是零就没交,谢谢各位了

解决方案 »

  1.   

    怎么又一个呀
    select 
      '工号',13-max(to_number(substr('时间',6))) '交费次数'
    from 
      a
    where 
      '时间' like '2006-%'
      and '交费金额'>0
    group by 
      '工号'
      

  2.   

    SQL> select *from bbs
      2  /A                             B C
    -------------------- ---------- --------------------
    001                          10 2006-1
    001                          10 2006-2
    001                           0 2006-3
    002                          10 2006-1
    002                           0 2006-1
    002                           0 2006-2
    002                          12 2006-37 rows selectedSQL> 
    SQL> select a,sum(b)
      2  from bbs
      3  group by a
      4  /A                        SUM(B)
    -------------------- ----------
    001                          20
    002                          22SQL> 
      

  3.   

    2楼解法正确,不过我觉得这里应该用min而不是maxselect '工号',13-min(to_number(substr( '时间 ',6)))   '交费次数 '
    from  
        a
    where  
        '交费金额 '> 0
    group   by  
        '工号 '