簡體   English   中英

查找給定日期的有效時間段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM