【发布时间】:2019-04-19 13:16:44
【问题描述】:
*编辑 - 没有更新权限。
我有下表: id 应该只与一个区域相关联。 TableB 上有重叠。因此,19 年 1 月 9 日的约翰与东部和中东地区相关联。
我可以操纵 TableB 来修复重叠吗?
所以,最旧的行enddate (1/9/19) would change to 1/7/19.
可能有超过一天的重叠。
Lead 和或Lag 在这里使用?不知道从哪里开始。
表A
CustDate id Name
1/9/19 1 John
表B
StartDate EndDate AREA
1/1/2019 1/9/19 East
1/8/2019 12/31/4000 Mideast
示例 SQL
,CASE WHEN ENDDATE >
LEAD(STARTDATE) OVER (PARTITION BY ID ORDER BY STARTDATE)
THEN MIN(ENDDATE) OVER (PARTITION BY ID) - interval '1' day
ELSE ENDATE
END END_DT2
【问题讨论】:
-
TableA和这个问题有什么关系? -
正确。一个人可以在不参考表 A 的情况下回答这个问题,但添加它以直观地显示我的 Name 与多个区域相关联的问题..
-
除了
StartDate, EndDate, AREA之外,难道没有像id这样的列指代John 在tableb 中的id 吗?