物流房租的缴费系统,现在有一个数据表,表里字段有缴费时间,到期时间,区号,门牌号。我怎么写才能查出,逾期的数据呢(逾期的数据就是当前时间大于到期时间,当第二次缴费的时候,之前到期的数据和现在缴完费的数据是不应该查到的)。比如第一次 A区14号 缴费两次 
区号  门牌号  开始时间    结束时间
 A   14     2013-3-4  2013-6-4
 A   14     2013-6-4  2014-1-1以上的数据不能查到的  区号  门牌号  开始时间    结束时间
 A   15     2013-3-4  2013-6-4
这个数据是应该能查到的不知道怎么写语句,试了试都不对。数据库

解决方案 »

  1.   

    1、你的数据里面相同的数据,不应该有重叠的时间段,也就是你一开始那个A,第二条的开始时间应该是第一条结束时间加一天,不然数据会有重叠。
    2、试试:select * from tb where getdate()>结束日期
      

  2.   


    这条语句的话select * from tb where getdate()>结束日期  查出来的就是最初到期时间,但是后来又缴费的就查不出来了
      

  3.   

    我假设你的主键就只有门牌号:
    select * from tb where 门牌号 not in (
    select 门牌号 from tb where getdate() between 开始时间 and 结束日期)
      

  4.   

    SELECT b.* FROM
    (
    SELECT quhao, num, maxzujinedate=MAX(zujinedate)
    FROM tb
    GROUP BY quhoa, num
    ) a
    INNER JOIN tb b
    ON a.quhao = b.quhao
    AND a.num = b.num
    WHERE a.maxzujinedate < GETDATE()
    ORDER BY b.id
      

  5.   

    我用的是access数据库,现在一直提示[试图执行的查询中不包含作为聚合函数一部分特定表达式‘quhao’]
      

  6.   

    试试:select * from tb a where NOT EXISTS (SELECT 1 FROM 
     from TB b where getdate() BETWEEN b.开始时间 and b.结束日期 AND a.门牌号=b.门牌号 AND a.区号=b.区号)
      

  7.   

    not exist说是有语法错误 我用的access数据库  
    还有就是Where条件后面 加的是哪个字段  ?
      

  8.   

    access也有exists的啊,where 后面主要是加exists外面和里面两个表的主键,及里面表的筛选条件,没环境调试不了
      

  9.   

    top1?你写死1就可以了,别用top
      

  10.   


    谢谢版主了 弄出来了,非常感谢  也谢谢其他的朋友完事结贴谢谢,下次记得发到access那里
      

  11.   


    谢谢版主了 弄出来了,非常感谢  也谢谢其他的朋友完事结贴谢谢,下次记得发到access那里嗯好吧 哈哈 不过都差不多哈
      

  12.   

    那不是哦,access的人能很快帮你解决,但是sqlserver的话可能写完你又不能用,反反复复