[英]Find valid time period for given date
我的問題是使用兩個SQL表查找給定日期的有效價格。 第一表列如下所示:
Item_ID | Date
第二個就像:
Item_ID | FromDate1 | Price1 | FromDate2 | Price2 | FromDate3 | Price3 | FromDate4 | Price4 | EndDate
我想寫查詢,結果將是這樣的:
Item_ID | Date | Valid_Price
您可能已經猜到Valid_Price取決於日期。 例如
如果first.FromDate(x)<second.Date <first.FromDate(x + 1)
result.Valid_Price = first.Price(x)
當然,兩個表中的Item_ID必須相同,但是我知道我可以在WHERE或ON上進行操作。 您是否有想法在SQL查詢中包含上述條件?
PS有時僅填充幾列。 例如,可能僅存在FromDate1,Price1,EndDate,其余值均為NULL。
我認為這不是關於查詢的最佳解決方案,但這可能是可行的:
SELECT Item_ID, first.date,
CASE WHEN first.date <= FromDate1 THEN Price1
WHEN first.date <= FromDate2 THEN Price2
WHEN first.date <= FromDate3 THEN Price3
WHEN first.date <= FromDate4 THEN Price4
ELSE 0
END AS price
FROM first JOIN second USING (Item_ID);
希望能有所幫助。 但不確定要了解您的“ first.FromDate(x + 1)”
案例說明非常有幫助。 該代碼塊最終看起來像:
CASE WHEN first.[Date] >= FromDate6 THEN Price6
WHEN first.[Date] >= FromDate5 THEN Price5
WHEN first.[Date] >= FromDate4 THEN Price4
WHEN first.[Date] >= FromDate3 THEN Price3
WHEN first.[Date] >= FromDate2 THEN Price2
WHEN first.[Date] >= FromDate1 THEN Price1
ELSE NULL
END AS price
(...)
ON FIRST.[Date] <= EndDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.