手机充值记录表TelCHG,字段有id(充值记录ID),telnum(手机号),cardNum(充值卡号),chgTM(充值时间)。
手机每充一次值,表中记录就会增加一条。
现在写查出距今有50天没有充值的手机号(不重复的)的sql语句,感觉挺不好写

解决方案 »

  1.   

    呵呵 和什么数据库没关系 ,写个通用sql就行。然后用不到所有手机的记录表,这表里面有手机号的字段
      

  2.   

    大概这样行不?
    select telnum from TelCHG 
    where 
    not in
    select telnum from TelCHG 
    where chgTM>50天之前
    and chgTM<=今天
      

  3.   

     select distinct colname,colurl,colid from v_userrights   where userid not in (select roleid from tb_userrole where userid="+userid+") or userid="+userid)这是我以前项目中的..你改一下吧.. 
      

  4.   

    好像要加括号。。那么可不可以这样..
    select telnum from TelCHG 
    where telnum
    not in
    (select telnum from TelCHG 
    where chgTM>50天之前
    and chgTM<=今天)
      

  5.   

    select distinct telnum from TelCHG where telnum not in (select telnum from TelCHG where chgTM>sysdate-50)
      

  6.   

    这个有关系么?
    最多选的时候加个unique避免重复。。选出在50天内冲过值的手机号 然后在所有手机号里把这部分去掉 不就是所需要求的手机号了么。。
    哪里有问题呢?
      

  7.   

    用oracle的sql写了一个:
    select telnum,ceil(sysdate-max(chgtm)) diff_days,max(chgtm)
    from TelCHG a
    group by telnum
    having ceil(sysdate-max(chgtm)) >1
      

  8.   

    select telnum,ceil(sysdate-max(chgtm)) diff_days,max(chgtm) 
    from TelCHG a 
    group by telnum 
    having ceil(sysdate-max(chgtm)) >50 --补充一下,替换为50
      

  9.   

    select telnum from TelCHG
    group by telnum having max(chgTM)<50;
      

  10.   

    select telnum(手机号)
      from (select telnum(手机号), max(chgTM(充值时间)) chgT
              from TelCHG
             group by telnum(手机号))
     where chgT <= sysdate - 50
      

  11.   

    我写个oracle语法的:select * from TelCHG
    where not exists(select id from TelCHG where chgTM-SYSDATE<50)记得给分哈,谢谢了。
      

  12.   

    SELECT * FROM TELCHG GROUP BY ID HAVING MAX(chgTM)<SYSDATE-50
      

  13.   

    select distinct telnum from TelCHG where telnum not in (select telnum from TelCHG where chgTM>sysdate-50 and chgTm<sysdate) 楼主看看行不
      

  14.   

    select * from teleinfo where sid in
    (select max(sid) from 
    (select * from teleinfo where datediff(dd,chgtm,getdate())>50) as s
     group by telnum)说明:
    teleinfo 表的名称
      

  15.   

    用group by 分组求出同一个号码的最晚充值。然后进行判断是否50天之后。