假设我有一个按日期排序的减法和分区表:
tblFactors
dt sub divide
2014-07-01 1 1
2014-06-01 0 5
2014-05-01 2 1
2014-05-01 0 3
我有另一个值表,按日期排序:
tblValues
dt val
2014-07-05 4
2014-06-15 5
2014-05-15 21
2014-04-14 31
2014-03-15 71
我需要执行一些顺序计算。对于tblFactors
中的第一个值,我需要从val
的每个tblValues.dt < '2014-07-01'
中减去1。
接下来,我需要处理tblFactors
中的第二行。没有什么可以减去的。但是,divide = 5
意味着我需要将每val
除以tblValues.dt < '2014-06-01'
的5。棘手的是我需要在之前行的修改后的val上执行此操作(除以20/5,而不是21/5)。
tblFactors
中的每一行都会以这种方式处理,给出如下序列:
tblFactors: Row 1 Row 2 Row 3 Row 4
Dt Original Val Subtract 1 Divide by 5 Subtract 2 Divide by 3
7/5/2014 4
6/15/2014 5 4
5/15/2014 21 20 4
4/14/2014 31 30 6 4
3/25/2014 71 70 14 12 4
这会让我:
qryValues
dt val
2014-07-05 4
2014-06-15 4
2014-05-15 4
2014-04-14 4
2014-03-15 4
现在我在R
的循环中进行向量乘法。我想知道在本机sql中是否有一种聪明的方法可以实现这一点。我尝试过一些聚合但是我的成功有限。