用手机业务做个比方吧,比如业务上规定,一个手机号两次兑换M值的时间间隔不能低于三个月,但由于系统原因有些手机号三个月内兑换了两次或者多次,如何查询出这些不该兑换的记录。假设记录表的几个字段 如手机号,业务时间,等等。

解决方案 »

  1.   

    实测数据CREATE TABLE T136
    (
        PhoneNumber VARCHAR2(20),
        TaskTime    DATE
    );
    INSERT INTO T136 VALUES('13345678909', to_date('2011-02-12', 'YYYY-MM-DD'));
    INSERT INTO T136 VALUES('13345678909', to_date('2011-06-12', 'YYYY-MM-DD')); --符合
    INSERT INTO T136 VALUES('13345678909', to_date('2011-07-12', 'YYYY-MM-DD'));
    INSERT INTO T136 VALUES('13345678909', to_date('2011-08-12', 'YYYY-MM-DD'));
    INSERT INTO T136 VALUES('13345678908', to_date('2011-02-13', 'YYYY-MM-DD'));
    INSERT INTO T136 VALUES('13345678908', to_date('2011-03-13', 'YYYY-MM-DD'));
    INSERT INTO T136 VALUES('13345678908', to_date('2011-07-13', 'YYYY-MM-DD')); --符合
    INSERT INTO T136 VALUES('13345678908', to_date('2011-11-13', 'YYYY-MM-DD')); --符合
    INSERT INTO T136 VALUES('13345678908', to_date('2011-12-13', 'YYYY-MM-DD'));
    实测结果:
      

  2.   

    刘哥,真是楷模呀
    出数据,写这么复杂的sql