【发布时间】:2021-08-14 09:31:02
【问题描述】:
我们有表 A 和表 B,我们需要的数据在表 A 中,我们使用表 B 来验证我们有匹配 Id 的情况。如果 id 不匹配,我们可以选择它而不进行验证,但如果它们匹配,我们需要检查日期是否在 date1 和 date2 之间。我们只检查 B 中的记录,如果它们在 A 中匹配; (f.e 我们可以忽略表 B 中的 id=4,因为它不在 A 中);而且我们只需要A表中的数据。
我花了太多时间来创建要选择的 sql:
表 A 中不在表 B 中的所有内容(ids, f.e id=1,3),并选择匹配记录 A.date 介于 B.date1 和 B.date2 之间的匹配记录(如果匹配且不匹配中间不要选择)
TABLE A
id date col1
1 5/08/2021 11223344
2 15/06/2021 22334411
2 15/04/2021 22223344
3 10/11/2021 22223311
TABLE B
id date1 date2
5 5/08/2021 5/09/2021
2 15/05/2021 15/07/2021
2 15/08/2021 15/09/2021
4 15/08/2021 15/10/2021
结果应该是这样的:
id date col1
1 5/08/2021 11223344
3 10/11/2021 22223311
2 15/06/2021 22334411
【问题讨论】:
标签: sql oracle plsql left-join