我有一個名爲Rateplan表和數據如下:如何更新日期字段的取值範圍
例如:
SELECT Rateplanid
, listingid
, rentalunitid
, validfromdate
, validtodate
FROM Rateplan
WHERE listingid = 721760
AND rentalunitid = 3027217
ORDER BY
listingid
, rentalunitid
, validfromdate
, validtodate
Rateplanid listingid rentalunitid validfromdate validtodate
3 721760 3027217 2012-08-09 00:00:00.000 2012-10-18 00:00:00.000
22563 721760 3027217 2012-10-26 00:00:00.000 2012-11-27 00:00:00.000
25412 721760 3027217 2012-10-30 00:00:00.000 2012-10-30 00:00:00.000
25421 721760 3027217 2012-10-31 00:00:00.000 2012-11-27 00:00:00.000
26945 721760 3027217 2012-11-01 00:00:00.000 2012-11-07 00:00:00.000
34807 721760 3027217 2012-11-14 00:00:00.000 2012-11-27 00:00:00.000
35947 721760 3027217 2012-11-15 00:00:00.000 2012-11-15 00:00:00.000
43793 721760 3027217 2012-11-29 00:00:00.000 2013-01-03 00:00:00.000
62665 721760 3027217 2013-01-03 00:00:00.000 2199-12-31 00:00:00.000
邏輯是Validtodate當前行中需要根據Validfromdate進行更新下一行。 如果nextrow的ValidfromDate爲< =當前行的Validate,那麼它需要更新爲小於Valisfrom下一行的值。 但我們還需要確保更新的Validtodate需要小於或等於當前行的validfromdate。
預期輸出:
Rateplanid listingid rentalunitid validfromdate validtodate
3 721760 3027217 2012-08-09 00:00:00.000 2012-10-18 00:00:00.000
22563 721760 3027217 2012-10-26 00:00:00.000 2012-10-29 00:00:00.000
25412 721760 3027217 2012-10-30 00:00:00.000 2012-10-30 00:00:00.000
25421 721760 3027217 2012-10-31 00:00:00.000 2012-10-31 00:00:00.000
26945 721760 3027217 2012-11-01 00:00:00.000 2012-11-07 00:00:00.000
34807 721760 3027217 2012-11-14 00:00:00.000 2012-11-14 00:00:00.000
35947 721760 3027217 2012-11-15 00:00:00.000 2012-11-15 00:00:00.000
43793 721760 3027217 2012-11-29 00:00:00.000 2013-01-02 00:00:00.000
62665 721760 3027217 2013-01-03 00:00:00.000 2199-12-31 00:00:00.000
Rateplan表是否包含主鍵? – Endrju
@zxspectrum是的我已經添加Rateplaid主鍵到我的問題 – peter