如何取加上选择条件的上一期合同的 某个数据?
租金表ContractTable,有7个字段,分别是:ContractNumber(合同号,主键,nvarchar)、City(所在城市,nvarchar),Road(所在路段,nvarchar),Address(门牌号,nvarchar),LeaseDateFrom(合同起始日,date),LeaseDateTo(合同终止日,date),TypeOfPayment(缴款方式,nvarchar)
-
City、Road、Address是联合使用的,用来确定具体的地址。
-
现在把同一个City+Road+Address的联合值作为一个门店的完整地址,因为每隔一段时间这个门店会重新签合同,TypeOfPayment(缴款方式)也可能变化。
-
问题:我想求同一个门店现在的上一期的TypeOfPayment该怎么求?
(上一期的合同应该可以根据LeastDateTo(合同终止日)的先后来推断)
有1点要注意的地方:1.同一个门店可能对应很多期的合同,我只是求门面上期合同的TypeOfPayment。以下是我写的代码,后面还有我遇到的新问题。
;with f as(select px=row_number()over(partition by city,road,address order by leasedateto),* from contracttable )select b.City+b.Road +b.Address as 地址 ,a.typeofpayment ,b.TypeOfPayment from f a left join f b on a.City+a.Road +a.Address=b.City+b.Road +b.Address and a.px=b.px-1
;with f as(select px=row_number()over(partition by city,road,address order by leasedateto),* from contracttable )select b.City+b.Road +b.Address as 地址 ,a.typeofpayment ,b.TypeOfPayment from f a left join f b on a.City+a.Road +a.Address=b.City+b.Road +b.Address and a.px=b.px-1 where a.ContractNumber like '%new%' and a.ContractNumber like '%20122%'