根据Oracle中的范围日映射两个表

时间:2016-09-23 16:01:48

标签: oracle

我正在寻找如何编写oracle查询以在两个表之间交叉信息并将它们动态放在一起

例如,我有来自表1的以下数据,其中'PRODUCT'需要与表2匹配(WHERE T1.DN = T2.NO)

TABLE 1

PRODUCT说明见表2:PROD_TYPE

TABLE 2

结果应如下

FINAL

基本上我想动态映射每个日期和产品在表1中从t2选择正确的product_type,但我不知道我会怎么做

我尝试了下面的代码,但结果并不像预期的那样,请需要一些建议,如果有人可以提供帮助,我将不胜感激。

    SELECT *
    FROM TABLE1 A
    LEFT JOIN TABLE2 B
    ON TABLE1.DN = TABLE2.NO and (DATE BETWEEN INTRO_DATE AND REMOVAL_DATE )
    where TABLE1.DN = 6755

1 个答案:

答案 0 :(得分:0)

您选择*,这意味着您将从两个表中获取所有列。这是“不起作用”的唯一方式吗?查询看起来是正确的(除非你打算在任何地方使用完整的表名,否则你不清楚为什么要对它们进行别名;通常会写一个a.dn = b.no等等。)

问题在于您的数据。如果你使用包含两端的“between”。在您的TABLE2中,一个间隔在6月10日结束,下一个间隔也在6月10日开始。如果它必须保留(删除意味着在删除日期不再是“当前”),那么您可以通过更改“REMOVAL_DATE”在查询中修复它“到REMOVAL_DATE - ”BETWEEN“条款中的1。