现在我有一个问题,有一张表,里面存的是票信息(这个票可以说是数据记录),票有合格和不合格的两种,而且票得负责人有很多个,怎样统计出每一个人(是每一个人)在不合格票之间的合格票数。
俺是真没思路啊
oracle能实现么?
页面代码使用的jsp,也可以用润乾报表。
假设票ID为SHEETID,判断是否合格为ISHG(值为“合格”和“不合格”),负责人为PERSON
先谢谢大家了,给个思路也行

解决方案 »

  1.   

    给出样例表及数据的SQL脚本及想要的结果。
      

  2.   

    表SHEET:
    ————————————
    SHEETID PERSON ISHG
    10000    张三   合格
    10001    李四   不合格
    10002    李四   合格
    ………………结果:
    ——————————
    连续百张无差错奖励表:
    责任人  第100张票号
    张三    20001
    张三    20101比如这样
      

  3.   


    select person,ishg,count(*) cnt
    from sheet
    group by person,ishg
    having count(*)>=100
      

  4.   

    还没有oracle实现不了的,这都是些基本的sql就能解决的
      

  5.   


    路过,看看能不能解决。如果按楼主的要求,非要连续100张都合格才统计的话,就不是一般的SQL能实现的了。
      

  6.   

    在加一个时间字段TIME,怪我没说清
    表SHEET:
    ————————————
    SHEETID PERSON ISHG time
    10000 张三 合格     2011-01-01 00:00:00
    10001 李四 不合格   2011-01-02 00:00:00
    10002 李四 合格     2011-01-03 00:00:00
    ………………结果:
    ——————————
    连续百张无差错奖励表:
    责任人 第100张票号
    张三 20001
    张三 20101
    是连续的,不是只统计
      

  7.   

    select person,max(sheetid) from (
    select sheetid, person, ishg,row_number()over(partition by person, ishg order by time) rn from  sheet)
    GROUP BY person, ishg,ROWNUM-rn
    having Count(*)=100