连接变通方法之间的范围

时间:2017-04-11 18:45:27

标签: sql oracle

我有两张桌子。表1是包含每日交易数据的事实表。另一个是维度表,其中包含日期和日期的范围信息。我正在使用between子句加入这两个表。是否有可能在连接到内连接之间重写。

表1:

dt_key   prd_id 
20170401 1
20170401 2

表2:

frm_dt   to_dt    cost prd_id
20170325 20170330   44 1
20170331 20170401   12 1
20170329 20170430   22 2
20170331 20170401   24 2

查询:

select prd_id ,cost 
from table_1 a,table_2 b
where a.prd_id=b.prd_id
and a.dt_key between frm_dt and to_dt;

我想要一些解决方法,以避免在连接或添加一个连接条件之间 dt_key / divisor = --------

如果你能提出任何逻辑

那就太好了

1 个答案:

答案 0 :(得分:0)

根据您提供的内容,我提供了以下内容。它本质上是相同的查询。什么不清楚为什么你想要做一些不同的事情。您正在加入prd_id(主要连接)上的表,但也会根据字符串日期限制连接。根据您提供的信息,我不知道您是如何做到这一点的。

SELECT
    prd_id,
    cost
FROM
    table_1 a
    INNER JOIN table_2 b ON (
            a.prd_id = b.prd_id
        AND
            a.dt_key BETWEEN b.frm_dt AND b.to_dt
    );