当前位置: 代码迷 >> Sql Server >> 求教一个-关于该交房租查询的SQL,该如何解决
  详细解决方案

求教一个-关于该交房租查询的SQL,该如何解决

热度:65   发布时间:2016-04-24 10:15:07.0
求教一个----------------关于该交房租查询的SQL
没分了,大家帮看看也行,谢了.

是这样,我想做一个SQL出来查询应该交房租的SQL语句,在SQL2000下.

比如,当cowbo的enddate是每月01/05,那他就要在每月这天前交房租.

表Contract是合同表(住户名,合同开始,结束,合同号),:

ID                  clientName                   startdate                enddate               ContractID
----------------------------------------------------------------------------------------------------------
1                    cowbo                 2014-01-05          2015-01-05          合同号1021210
2                    xiu                        2014-03-15          2015-03-15          合同号1021211


表Pay是付房租的(发生日期,合同号,金额)

ID           indate                    ContractID                   cost
---------------------------------------------------------------------------
  


我想做一个SQL语句查询分别查出:
1.在每个月不同的人在enddate之前5天的未交房租记录.(也就是该交房的住户)
2.查出不同的人过了每月该交房租但未交的记录?(逾期记录)



------解决方案--------------------

-- 1.在每个月不同的人在enddate之前5天的未交房租记录.(也就是该交房的住户)
select * 
 from [Contract] a
 where not exists
 (select 1 
  from [Pay] b 
  where b.ContractID=a.ContractID 
  and left(convert(varchar,b.indate,112),6)=left(convert(varchar,getdate(),112),6))
 and convert(varchar,getdate(),112)>=
     convert(varchar,dateadd(d,-5,left(convert(varchar,getdate(),23),8)+right(convert(varchar,a.enddate,112),2)),112)

-- 2.查出不同的人过了每月该交房租但未交的记录?(逾期记录)
select * 
 from [Contract] a
 where not exists
 (select 1 
  from [Pay] b 
  where b.ContractID=a.ContractID 
  and left(convert(varchar,b.indate,112),6)=left(convert(varchar,getdate(),112),6))
 and convert(varchar,getdate(),112)>=
     convert(varchar,left(convert(varchar,getdate(),23),8)+right(convert(varchar,a.enddate,112),2),112)
  相关解决方案