我的问题是使用两个SQL表查找给定日期的有效价格。 第一个表格列如下:
Item_ID | Date
,第二个是:
Item_ID | FromDate1 | Price1 | FromDate2 | Price2 | FromDate3 | Price3 | FromDate4 | Price4 | EndDate
我想编写Query,其结果如下:
Item_ID | Date | Valid_Price
正如您可能猜到的,Valid_Price取决于日期。 E.g。
如果first.FromDate(x)< second.Date< first.FromDate(X + 1)
result.Valid_Price = first.Price(x)
当然,两个表中的Item_ID必须相同,但我知道我可以用WHERE或ON来做。您有任何想法如何在SQL查询中包含上述条件吗?
P.S。有时只填充几列。例如。可能只有FromDate1,Price1,EndDate,其余值都是NULL。
答案 0 :(得分:0)
我认为这不是关于查询的最佳解决方案,但这可能是有用的:
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)”
答案 1 :(得分:0)
案例陈述非常有帮助。这段代码最终看起来像:
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