假设我有一个包含字段值的表:v1、v2、v3、v4
当合并 2 行时: sum = v1*v2 + v1*v3 + ... + v3*v4
当组合 3 行时: sum = v1*v2*v3 + v1*v2*v3 + ... + v2*v3*v4
基本上先得到所有行的组合,然后得到每个组合产品的总和。我已经为这个任务写了一个vba类,但是很笨拙,只是一个一个地计算每个组合。我想知道有没有更简单的方法来完成这项工作?SQL查询或线性代数,任何可以简化过程的方式都受到欢迎。谢谢。
假设我有一个包含字段值的表:v1、v2、v3、v4
当合并 2 行时: sum = v1*v2 + v1*v3 + ... + v3*v4
当组合 3 行时: sum = v1*v2*v3 + v1*v2*v3 + ... + v2*v3*v4
基本上先得到所有行的组合,然后得到每个组合产品的总和。我已经为这个任务写了一个vba类,但是很笨拙,只是一个一个地计算每个组合。我想知道有没有更简单的方法来完成这项工作?SQL查询或线性代数,任何可以简化过程的方式都受到欢迎。谢谢。
谢谢Monty Wild,我已经弄清楚了。
SELECT sum(t1.value*t2.value) AS aggrSum
FROM tbl AS t1
INNER JOIN tbl AS t2
ON t1.ID<t2.ID;
注意 tbl.ID 应该是唯一的。
如果没有 VBA,MS Access 就无法真正做到这一点。JET SQL 能够对聚合中的数据进行求和,但没有 Product 聚合,并且 JET SQL 不支持用户定义的聚合。
如果您发布代码,有人可能会提出改进建议。