Coo*_*raw 2 ms-access vba ms-office
我有一张以下表格:
1 X 10
2 X 30
3 Y 5
4 Y 2
...etc
Run Code Online (Sandbox Code Playgroud)
我需要把它变成:
X 300 //(10 * 30)
Y 10 //(5 * 2)
Run Code Online (Sandbox Code Playgroud)
所以我实际上正在寻找一种乘法函数,我可以像sum,avg和stuff那样使用......这样的人存在吗?
例如:
select field2, **multiply**(field3)
from t
group by field2
Run Code Online (Sandbox Code Playgroud)
谢谢
理想情况下,Access SQL将具有PRODUCT可用的聚合函数,但它没有.然而,我们可以通过记住我们在学校学习的对数(或不是......)来模拟它,并记住日志总和的反对数等于产品:
SELECT field2, EXP(Sum(LOG(Field3))) AS ProductOfField3
FROM t
GROUP BY Field2
Run Code Online (Sandbox Code Playgroud)
请注意,如果存在任何零值,则true PRODUCT函数将简单地返回0组,但如果存在任何零值,则此解决方案将失败,因此请注意这一点.此外,如果存在任何负值,此方法将不起作用.
要处理零,我们可以这样做:
SELECT
field2,
EXP(Sum(LOG(IIf(Field3 = 0, 1, Field3)))) AS ProductOfField3,
MIN(ABS(Field3)) AS MinOfAbsField3
FROM t
GROUP BY Field2
Run Code Online (Sandbox Code Playgroud)
然后忽略ProductOfField3任何行为MinOfAbsField3零的值(因为这表示一个包含零的组,因此'true'产品应该是0)
为了处理负值,我们可以进一步做到这一点:
SELECT
field2,
EXP(Sum(LOG(IIf(Field3 = 0, 1, ABS(Field3))))) AS ProductOfField3,
MIN(ABS(Field3)) AS MinOfAbsField3,
SUM(IIf(Field3 < 0, 1, 0)) AS SumOfNegativeIndicator
FROM t
GROUP BY Field2
Run Code Online (Sandbox Code Playgroud)
并使用以下规则解释结果:
MinOfAbsField3为零,则忽略ProductOfField3该行 - 产品为零ProductOfField3,则给定行的所需答案被否定SumOfNegativeIndicator| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |