Oracle SQL:从与其他表行的比较日期中选择值

o4tp2gmn  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(142)

我正试着写ORACLE SQL,但却把自己绑在结里。我没什么可展示的。
我有一个名为START_PERIOD的表
| 开始日期|结束日期| end_date |
| --|--| ------------ |
| 2022年1月1日|2022年3月31日| 31/03/2022 |
| 2019 - 04 - 01| 2022年6月30日| 30/06/2022 |
| 2019 - 07 - 01 00:00:00| 2019 - 09 - 21 00:00:00| 30/09/2022 |
| 2022年10月1日|2022年12月31日| 31/12/2022 |
我有第二个表APPLICATION_FORM。APPLICATION_FORM表包含一个名为“CS_START_DATE”的日期字段,以及一个名为SP_ID的字段(该值为START_PERIOD.ID)。
APPLICATION_FORM.SP_ID基于APPLICATION_FORM.CS_START_DATE的值分配,并且这是从表START_PERIOD导出的,即APPLICATION_FORM.CS_START_DATE 01/02/2022福尔斯在01/01/2022和31/03/2022之间,因此APPLICATION_FORM.SP_ID为1。
不幸的是,SP_ID和CS_START_DATE关系已更改,现在不正确。
我想使用APPLICATION_FORM.CS_START_DATE并将其与表START_PERIOD中的每个日期范围(它福尔斯在START_DATE和END_DATE之间)进行比较,并从表START_PERIOD返回正确的ID。然后,我将使用这个ID与APPLICATION_FORM.SP_ID进行比较,看看是否存在不匹配。理论上,APPLICATION_FORM.CS_START_DATE始终正确,但APPLICATION_FORM.SP_ID可能不正确。

dphi5xsq

dphi5xsq1#

您可以尝试使用以下SQL

SELECT start_period.id        AS correct_id,
       application_form.sp_id AS incorrect_id
  FROM start_period, application_form
 WHERE application_form.cs_start_date BETWEEN start_period.start_date 
                                          AND start_period.end_date

字符串

相关问题