如何解决SQL中2个表中根据时间线拆分记录
我有 2 个表,Say - Customer 和 Car,每个记录都有时间表。
我必须将 Customer 视为驱动表,将 Car 视为查找表,并显示 Customer 表中的所有记录以及 Car 表中的匹配,但具有适当的时间线。
如果您查看预期的输出,我们需要以这样的方式连接和拆分记录 -
- 如果在任何时间段内,客户没有关联任何汽车,那么这将是一个记录(例如,约翰与德里市从 14 年 1 月 1 日到 14 年 2 月 1 日,2014 年 7 月 1 日到 01 年-Oct-14 和 01-Nov-14 至 01-Jan-15)
- 如果客户在一段时间内有任何汽车相关联,那么这将是另一条记录(例如,John 于 14 年 2 月 1 日至 2014 年 7 月 1 日和 14 年 10 月 1 日至 11 月 1 日与德里市-14)
客户
ID | 城市 | 有效DT | 过期DT |
---|---|---|---|
约翰 | 孟买 | 1-1-12 | 12 年 3 月 31 日 |
约翰 | 德里 | 12 年 3 月 31 日 | 12 年 12 月 31 日 |
约翰 | 钦奈 | 12 年 12 月 31 日 | 1-7-13 |
约翰 | 浦那 | 1-7-13 | 13 年 12 月 31 日 |
约翰 | 德里 | 1-1-14 | 1-1-15 |
汽车
Customer_ID | 汽车 | 有效DT | 过期DT |
---|---|---|---|
约翰 | 特斯拉 | 12 年 4 月 10 日 | 10-5-12 |
约翰 | 现代 | 12 年 12 月 31 日 | 1-May-13 |
约翰 | 本田 | 1-Oct-13 | 13 年 12 月 31 日 |
约翰 | 起亚 | 1-Mar-13 | 1-Oct-13 |
约翰 | 福特 | 1-Feb-14 | 1-7-14 |
约翰 | 铃木 | 1-Oct-14 | 1-Nov-14 |
预期产出
ID | 城市 | 汽车 | 有效DT | 过期DT |
---|---|---|---|---|
约翰 | 孟买 | 1-1-12 | 12 年 3 月 31 日 | |
约翰 | 德里 | 12 年 3 月 31 日 | 12 年 4 月 10 日 | |
约翰 | 德里 | 特斯拉 | 12 年 4 月 10 日 | 10-5-12 |
约翰 | 德里 | 10-5-12 | 12 年 12 月 31 日 | |
约翰 | 德里 | 现代 | 12 年 12 月 31 日 | 12 年 12 月 31 日 |
约翰 | 钦奈 | 现代 | 12 年 12 月 31 日 | 1-May-13 |
约翰 | 钦奈 | 起亚 | 1-Mar-13 | 1-7-13 |
约翰 | 浦那 | 本田 | 1-Oct-13 | 13 年 12 月 31 日 |
约翰 | 浦那 | 起亚 | 1-7-13 | 1-Oct-13 |
约翰 | 德里 | 1-1-14 | 1-Feb-14 | |
约翰 | 德里 | 福特 | 1-Feb-14 | 1-7-14 |
约翰 | 德里 | 1-7-14 | 1-Oct-14 | |
约翰 | 德里 | 铃木 | 1-Oct-14 | 1-Nov-14 |
约翰 | 德里 | 1-Nov-14 | 1-1-15 |
我尝试使用带过滤器的左连接来检查 Car 表有效或过期时间应始终介于客户表有效和过期时间的有效和过期时间之间,并且能够获得部分结果,但面临获取 Car 表的记录的挑战部分标记给客户(像约翰的记录 -> 德里 -> 预期输出表中的空车信息)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。