Sql oracle如何从其他表中获取列值

Sql oracle如何从其他表中获取列值,sql,oracle,Sql,Oracle,我有以下表格和一些列: 我想要的逻辑有点复杂,但我试图找到一种方法,在以下查询中引用baar_value-where子句中表foo中的reportdate: SELECT * FROM foo WHERE baar IS NOT NULL AND NOT EXISTS (SELECT * FROM baar_value WHERE b_value = baar AND reportdate BETWEEN from_date AND to_date ) 如何检查foo.

我有以下表格和一些列:

我想要的逻辑有点复杂,但我试图找到一种方法,在以下查询中引用baar_value-where子句中表foo中的reportdate:

SELECT *
FROM foo
WHERE baar IS NOT NULL
AND NOT EXISTS
  (SELECT *
  FROM baar_value
  WHERE b_value = baar
  AND reportdate
  BETWEEN from_date AND to_date
  )

如何检查foo.reportdate是否介于baar_值。from_日期和baar_值\u to_日期之间?

根据您的描述,您可能只需要以下内容:

SELECT *
FROM foo
WHERE baar IS NOT NULL
AND NOT EXISTS
  (SELECT *
  FROM baar_value
  WHERE b_value = baar
    AND foo.reportdate BETWEEN from_date AND to_date
  )
测试:

SQL> create table foo(reportdate, baar) as
  2      select date '2016-04-01', 1 from dual;

Table created.

SQL> create table baar_value( b_value, from_date, to_date) as
  2      select 1, date '2016-01-01', date '2017-01-01' from dual union all
  3      select 1, date '2015-01-01', date '2016-01-01' from dual;

Table created.

SQL> SELECT *
  2  FROM foo
  3  WHERE baar IS NOT NULL
  4  AND NOT EXISTS
  5                (SELECT *
  6                FROM baar_value
  7                WHERE b_value = baar
  8                  AND foo.reportdate BETWEEN from_date AND to_date
  9                );

no rows selected

根据您的描述,您可能只需要以下内容:

SELECT *
FROM foo
WHERE baar IS NOT NULL
AND NOT EXISTS
  (SELECT *
  FROM baar_value
  WHERE b_value = baar
    AND foo.reportdate BETWEEN from_date AND to_date
  )
测试:

SQL> create table foo(reportdate, baar) as
  2      select date '2016-04-01', 1 from dual;

Table created.

SQL> create table baar_value( b_value, from_date, to_date) as
  2      select 1, date '2016-01-01', date '2017-01-01' from dual union all
  3      select 1, date '2015-01-01', date '2016-01-01' from dual;

Table created.

SQL> SELECT *
  2  FROM foo
  3  WHERE baar IS NOT NULL
  4  AND NOT EXISTS
  5                (SELECT *
  6                FROM baar_value
  7                WHERE b_value = baar
  8                  AND foo.reportdate BETWEEN from_date AND to_date
  9                );

no rows selected

什么是recs_Type930?另外,您能发布该样本数据的预期结果吗?我已经更改了:)什么是REC_type_i930?另外,您可以发布该示例数据的预期结果吗?我已更改此:)我尝试了此操作,但出现错误ORA-00904:“foo”。“reportdate”无效标识是否确实出现了此错误,并且表结构与您发布的完全相同?刚刚发布了一个测试我尝试了这个,但是我得到了错误ORA-00904:“foo”,“reportdate”无效标识您确定您得到了这个错误并且表结构与您发布的完全一样吗?刚刚发布了一个测试