表格包含PriceValidFrom,PriceValidTo,BookingWindowFrom和BookingWindowTo日期字段和Price貨幣字段。客戶端隨機插入或更新行。例如,某些行的PriceValid週期可能比其他行短,但可能在同一個月內(並且價格不同)。其他行可能具有相同的PriceValid週期,但僅可能在BookingWindow期間有所不同。桌子從不清理,一切都可以接受。 我需要一個查詢,給定日期,將返回具有最高PriceValidFrom日期的行中的價格。在下面的例子中,考慮到表和查詢語句:使用兩個不同日期選擇最上一行
PriceValidFrom PriceValidTo Price
05/01/2013 05/30/2013 $100.00
05/15/2013 05/20/2013 $50.00
僞SQL
select top 1 price
where :Date between PriceValidFrom and PriceValidTo
order by PriceValidFrom DESC, Price
如果日期是2013年5月16日該查詢返回$ 50.00預期。
現在,用戶需要添加一個預訂窗口時期,還必須採取最高BookingWindowFrom:
PriceValidFrom PriceValidTo Price BookingWindowFrom BookingWindowTo
05/01/2013 05/30/2013 $100.00 4/1/2013 5/30/2013
05/15/2013 05/20/2013 $50.00 4/1/2013 5/30/2013
05/15/2013 05/20/2013 $75.00 5/1/2013 5/30/2013
現在,如果日期是2013年5月16日和預約日期爲5/1/2013查詢需要返回$ 75.00
如何完成預期的結果?請注意,這是一個簡化的例子,但實際表格中會有數百行。
select top 1 price
where :Date between PriceValidFrom and PriceValidTo
and :BookingDate between BookingWindowFrom and BookingWindowTo
什麼有效日期ovverides?有效? – 2013-05-01 14:58:34
有些描述或示例數據顯示當有效日期存在和不存在時要執行的操作會有所幫助。 – 2013-05-01 15:00:45
我已更新我的帖子。請再看看它。謝謝 – 2013-05-01 23:14:49