根据日期和关键字段合并两个表
Posted
技术标签:
【中文标题】根据日期和关键字段合并两个表【英文标题】:Merge two table based on date and key fields 【发布时间】:2020-06-22 16:05:34 【问题描述】:我有两个带有 version_start 和 version_end 日期的表。我想合并这些表,如下例所示。
表 1
VERSION_START_DT VERSION_END_DT KEY ATTR1
6/2/2020 6/16/2020 123 A
6/17/2020 12/31/2022 123 B
表 2
VERSION_START_DT VERSION_END_DT KEY ATTR2
6/11/2020 12/31/2023 123 C
输出应该是不重叠的版本日期及其相应属性的值
VERSION_START_DT VERSION_END_DT KEY ATTR1 ATTR2
6/2/2020 6/10/2020 123 A NULL
6/11/2020 6/16/2020 123 A C
6/17/2020 12/31/2022 123 B C
01/01/2023 12/31/2023 123 NULL C
【问题讨论】:
mysql 还是 oracle?选一个! 欢迎来到 SO。请看:Why should I provide an MCRE for what seems to me to be a very simple SQL query? 我最近在similiar question 上回答。在这里,您不需要填补空白,但您需要两个表中的属性。这是给甲骨文的。请说明您使用的是 MySQL 还是 Oracle。 如果是 Oracle this dbfiddle 应该有帮助。 【参考方案1】:请尝试这样的事情
SELECT version_start.VERSION_START_DT , version_end.VERSION_END_DT, version_start.KEY
FROM Orders
INNER JOIN version_end ON version_start.ATTR1=version_end.ATTR2;
教程https://www.w3schools.com/sql/sql_join.asp
或者这个请复制粘贴一般查询,然后按年编辑查询
选择 version_start.VERSION_START_DT、version_end.VERSION_END_DT 从订单 INNER JOIN version_end ON version_start.VERSION_START_DT = version_end.VERSION_END_DT;
你可以试试这样的
【讨论】:
SELECT version_start.VERSION_START_DT , version_end.VERSION_END_DT, version_start.KEY FROM version_start INNER JOIN version_end ON version_start.ATTR1=version_end.ATTR2; 不要只是发布代码,解释它在做什么以及为什么。 但一般来说,我们避免回答要求我们为其编写基本代码的问题。他们应该尝试自己解决问题,然后我们帮助他们解决问题。 不要将代码放入 cmets。如果您需要更正答案,请点击edit 链接。 将解释放在答案中,而不是 cmets。以上是关于根据日期和关键字段合并两个表的主要内容,如果未能解决你的问题,请参考以下文章