Oracle 使用一个表格作为另一个表格的参考点';s的计算
我希望使用一个表作为另一个表的参考点。表1将设置所有参数,表2包含一个计算所需的值。我正在寻找一种基于日期引用表2的值并将表1的值乘以表2中的值的方法。我希望这个例子能有所帮助 表1Oracle 使用一个表格作为另一个表格的参考点';s的计算,oracle,Oracle,我希望使用一个表作为另一个表的参考点。表1将设置所有参数,表2包含一个计算所需的值。我正在寻找一种基于日期引用表2的值并将表1的值乘以表2中的值的方法。我希望这个例子能有所帮助 表1 account1 datefrom1 dateto1 value1 1234 01/01/18 12/31/18 5 5678 01/01/17 12/31/17 6 8912
account1 datefrom1 dateto1 value1
1234 01/01/18 12/31/18 5
5678 01/01/17 12/31/17 6
8912 01/03/17 12/31/18 7
6543 02/01/18 12/31/18 8
表2
datefrom2 dateto2 value2
01/01/18 12/31/18 1.02
01/01/17 12/31/17 1.05
在本例中,我希望1234返回5.1(5*1.02),因为它属于1/1/18-12/31/18范围
我还希望5678返回6.3(6*1.05),因为它属于1/1/17-12/31/17范围
同样的逻辑也适用于8912和6543
我非常感谢您提供的任何帮助更多的是一个评论,而不是一个答案:如果您只需要关联
dateFrom
和dateTo
完全匹配的记录,那么您只需要一个连接:
select t1.account1, t1.datefrom1, t1.dateto1, t1.value1 * t2.value2 as val
from table1 t1
inner join table2 t2
on(t1.datefrom1 = t2.datefrom2 and t1.dateto1 = t2.dateto2)
如果您的关系不是那么简单,例如,与日期重叠的记录相关,请添加更多详细信息和更广泛的样本数据集
此外,如果一个表中的记录在另一个表中没有相应的记录,该怎么办?你想得到它吗?如果是,如何计算值?这是非常简单的示例。范围是否始终与您显示的完全匹配?或者它们可以像2017年7月1日至2018年6月30日那样重叠吗?那么如何计算呢?Datefrom1并不总是与datefrom2相同。我将添加一个示例。在大多数情况下,他们应该这样做,但也会有例外。不会有任何重叠。始终只有一个table2记录匹配,这仍然是一个简单的内部连接。考虑必须满足哪些条件才能找到表1记录的表2记录。表2.datefrom2必须满足哪些条件?表2.dateto2必须满足哪些条件?接受Aleksej的回答,并相应地修改ON子句。我明白了。非常感谢你的帮助。我非常感激。