Dan*_*vaw 2 ms-access ms-access-2013
我想填充,用SQL查询,现场F
与百分比在总有些领域f
,使得每个记录F(i)
的字段F
为:
F(i) = f(i)/SUM_i(f(i))
Run Code Online (Sandbox Code Playgroud)
字段f
和 都F
位于表中MyTable
。
然而,我正在努力开发一个能够做到这一点的查询。我的尝试是:
INSERT INTO MyTable (F)
SELECT f/MyField.fSum
FROM MyTable, (SELECT SUM(f) AS fSum FROM MyTable) AS MyField
Run Code Online (Sandbox Code Playgroud)
但是这段代码会在 table 中插入新行MyTable
。我不知道如何从这里开始,因为我的理解是该UPDATE
声明非常有限,并且对执行此操作没有用。
关于如何以最简单的形式做到这一点的任何想法?
我刚刚调用了这些列f
,F
为了说明目的,这不是它们在实际数据库中的命名方式。
你需要UPDATE
,而不是INSERT
:
UPDATE MyTable
SET F = f / (SELECT SUM(f) AS fSum FROM MyTable) ;
Run Code Online (Sandbox Code Playgroud)
或者:
UPDATE
MyTable AS my,
(SELECT SUM(f) AS fSum FROM MyTable) AS total
SET my.F = my.f / total.fSum ;
Run Code Online (Sandbox Code Playgroud)
正如 mendosi 评论的那样,在不同的(大写/小写)大小写中具有相同名称的两列,例如f
并且F
不推荐在任何 DBMS 中使用,并且(不确定)甚至可能不允许在 Access 中使用。
然而,上述语句在 2013 版本中不起作用。我认为它们在旧(1997)版本中起作用,但 Jet 引擎(3.5?4.0?)中的一些更改使查询抛出错误。
使用该DSUM()
函数进行求和,可以工作:
UPDATE MyTable
SET F = f / DSUM("f", "MyTable") ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
129 次 |
最近记录: |