我正试图编写Oracle SQL,但却被它束缚住了.我没什么可展示的.

我有一个名为Start_Period的表

id start_date end_date
1 01/01/2022 31/03/2022
2 01/04/2022 30/06/2022
3 01/07/2022 30/09/2022
4 01/10/2022 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可能不正确.

推荐答案

您可以try 使用以下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

Sql相关问答推荐

带有双引号的json在Presto中是否有区别对待?

SQL查询以创建手头的流动余额?

基于时间的SQL聚合

如何使用PostGIS从单个表中 Select 所有相交面组

分组多输出访问查询问题

将重复的值更新为下一个空闲数字

防止ActiveRecord迁移在db/structure.sql中进行巨大更改

两个不同星期的销售额,不加成一行

关于Postgres横向联接的谓词

SQL到Snowflake-转换嵌套的SELECT(值

其中使用表名作为;行值;记录?

从另一个没有公共键的表中获取值来加入

在 PostgreSQL 中,如何让多个判断约束引用相同的值数组?

Oracle 21c 中的递归查询回顾过go 3 周

基于字符串的SQL查询

为重复的项目编号显示正在处理

String_Split 多列

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法

如何跨行合并以删除 SQL 中的空值?

有条件求和