我有两个表中的数据
表:Sub_Data
+----------------+-----------------------+
| SKU_No | SKU_Registration_Date |
+----------------+-----------------------+
| abc123 | 1/21/2016 |
| abc124 | 2/21/2016 |
| xyz124 | 3/1/2016 |
+----------------+-----------------------+
表:SKU_Rate
+--------+----------+------+
| SKU_NO | Eff_Date | Rate |
+--------+----------+------+
| abc123 | 1/1/2016 | 25 |
| abc123 | 2/1/2016 | 27 |
| abc123 | 3/1/2016 | 29 |
| abc124 | 1/1/2016 | 35 |
| abc124 | 2/1/2016 | 37 |
| abc124 | 3/1/2016 | 39 |
| xyz124 | 1/1/2016 | 45 |
| xyz124 | 2/1/2016 | 47 |
| xyz124 | 3/1/2016 | 49 |
+--------+----------+------+
我想有一个Query,应该从SKU_Rate返回Sub_Data有效率
示例输出应该是这样的
SKU_No SKU_Registration_Date Rate
abc123 1/21/2016 25 as this rate is effective till 2/1/2016 -1 day
abc124 2/21/2016 39 as this rate is effective till 3/1/2016 - 1 day
xyz124 3/1/2016 49 as this rate is effective from 3/1/2016
答案 0 :(得分:0)
您必须加入SKU_Rate
两次(使用两个不同的别名)。第一次加入将是
ON Sub_Data.SKU_No=SKU_Rate.SKU_NO AND SKU_Rate.Eff_Date<=Sub_Data.SKU_Registration_Date
然后您将获得MAX(Eff_Date)
和Rate
其他联接将是
ON Sub_Data.SKU_No=SKU_Rate.SKU_NO AND SKU_Rate.Eff_Date>Sub_Data.SKU_Registration_Date
然后您将获得MIN(Eff_Date)
这将为您提供两个日期来生成您想要的结果,使用IIF和两个日期(并检查潜在的空日期)。