我有两张桌子。表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 = --------
如果你能提出任何逻辑
那就太好了答案 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
);