【发布时间】:2015-06-22 18:06:03
【问题描述】:
我正在开发 Microsoft Access。我的要求是,用户将给出任何百分比值,我必须找到构成“Value”列百分比的 ID 数量。例如在下面的数据集中(它也是按值列的降序排序,这也是必需的),所有值的总和是'8409131'。
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000015555 C 1887965
1000004864 D 1310400
1000015557 E 972838
如果我输入 75%,则值为 65170765.25,所以我需要返回所有形成 '65170765' 的 ID,小于或等于。所以在这种情况下,下面是小于 65170765 的值的总和。
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000015555 C 1887965
这可以实现我在 Access SQL 中的要求吗?
我的计划是创建一个运行总计列来查找前两行的总和,然后将该值与下一行的总和。但是在 Access 中,我无法弄清楚如何在选择查询中创建增量行来实现这一点。
我试过的查询:
SELECT T1.ID, T1.NAME, T1.VALUE,(T1.VALUE + T2.VALUE)
FROM (
SELECT ID , RUN_MANAGER.NAME AS NAME, RUN_MANAGER.REPORTING_PERIOD, SUM(VALUE) As VALUE
FROM DATA
INNER JOIN RUN_MANAGER
ON DATA.RUN_NUMBER=RUN_MANAGER.RUN_NUMBER
WHERE RUN_MANAGER.NAME='A'
GROUP BY ID,RUN_MANAGER.NAME
ORDER BY SUM(VALUE) DESC) AS T1
INNER JOIN (
SELECT ID , RUN_MANAGER.NAME AS NAME, RUN_MANAGER.REPORTING_PERIOD, SUM(VALUE) As VALUE
FROM DATA
INNER JOIN RUN_MANAGER
ON DATA.RUN_NUMBER=RUN_MANAGER.RUN_NUMBER
WHERE RUN_MANAGER.NAME='A'
GROUP BY ID,RUN_MANAGER.NAME
ORDER BY SUM(VALUE) DESC) AS T2
ON T1.ID=T2.ID+1
这不是一个重复的问题。问题是,这个问题是基于 Access SQL 的,而且我没有任何递增的升序行。
【问题讨论】:
-
如果您没有任何递增的升序行,您将如何确定行的顺序?还是您要求随机选择?
-
@Gustav 我必须添加序列行,但在访问中我无法弄清楚在选择查询中添加序列行。
-
但是你不能在没有排序的情况下在查询中添加序列号。如果无法定义排序,也可以使用随机序列。
标签: sql ms-access vba ms-access-2010