填补日期范围的空白 - SQL

时间:2017-09-20 13:12:04

标签: sql

我遇到了下面提到的问题而且没有SQL就行了,因为我有200万行。

我有一个表Table1,其中我有item / loc,其中包含给定日期范围的促销价格。我还有另一张表Table 2,其中我有2015 - 2017年每个项目/地区的基本价格,我必须用它来填补表1中给出的空白

表1

+-----------------------------------------------------------+
| Item  | Location | Startdate | EndDate   | Promoted Price |
+-------+----------+-----------+-----------+----------------+
| Item1 | Loc1     | 6/23/2015 | 6/24/2015 | 22             |
| Item1 | Loc1     | 7/10/2015 | 7/17/2015 | 30             |
| Item1 | Loc1     | 7/24/2015 | 7/31/2015 | 30             |
| Item2 | Loc2     | 6/21/2015 | 8/7/2015  | 25             |
| Item2 | Loc2     | 8/28/2015 | 9/4/2015  | 27             |
| Item2 | Loc2     | 9/11/2015 | 9/18/2015 | 28             |
+-------+----------+-----------+-----------+----------------+

表2

+--------------------------------------------------------+
| Item  | Location | Startdate | EndDate    | Full_Price |
+-------+----------+-----------+------------+------------+
| Item1 | Loc1     | 1/1/2015  | 12/31/2017 | 32         |
| Item2 | Loc2     | 1/1/2015  | 12/31/2017 | 24         |
| Item3 | Loc3     | 1/1/2015  | 12/31/2017 | 54         |
| Item4 | Loc4     | 1/1/2015  | 12/31/2017 | 67         |
| Item5 | Loc5     | 1/1/2015  | 12/31/2017 | 39         |
| Item6 | Loc6     | 1/1/2015  | 12/31/2017 | 48         |
| Item7 | Loc7     | 1/1/2015  | 12/31/2017 | 63         |
| Item8 | Loc8     | 1/1/2015  | 12/31/2017 | 52         |
| Item9 | Loc9     | 1/1/2015  | 12/31/2017 | 51         |
+-------+----------+-----------+------------+------------+

结果应该是这样的:

| Item  | Location | Startdate | EndDate   | Promoted Price |
+-------+----------+-----------+-----------+----------------+
| Item1 |   Loc1   | 6/23/2015 | 6/24/2015 | 22             |
| Item1 |   Loc1   | 6/25/2015 | 7/9/2015  | 32             |
| Item1 |   Loc1   | 7/10/2015 | 7/17/2015 | 30             |
| Item1 | Loc1     | 7/18/2015 | 7/23/2015 | 32             |
| Item1 | Loc1     | 7/24/2015 | 7/31/2015 | 30             |

2 个答案:

答案 0 :(得分:0)

有什么差距?看起来你过滤了“Item1”和“Loc1”

答案 1 :(得分:0)

谢谢大家。我能够通过使用Lead()函数来解决这个问题。