我尝试做的是在MS Access 2013中为与实际数据表分开的表创建更新查询(意味着数据表与统计表之间没有连接)存储一些需要存储的统计数据(例如记录计数)以供进一步计算和以后使用。
我在过去的几天里查了一堆教程,没有找到解决问题的方法,因为所有的解决方案包括加入表格,在我的情况下 - 是无关紧要的,由于要计算的表是临时的,并且数据不断变化,因此我总是希望计算每个记录,在给定日期找到整个临时表中的最大值等(如记录)。
statisticsTable 的结构:
| statDate (Date/time) | itemCount (integer) | ... |
----------------------------------------------------
| 01/01/2017 | 50 | ... |
| 02/01/2017 | 47 | ... |
| 03/01/2017 | 43 | ... |
| ... | ... | ... |
我想做什么,用半乱码代码:
UPDATE statisticsTable
SET itemCount = (SELECT Count(*) FROM tempTable)
WHERE statDate = 01/01/2017;
这应该使用临时表的当前行计数更新 statisticsTable 中 01/01/2017 的 itemCount 字段。< / p>
我知道这可能不是标准或正确使用MS Access或任何DBMS,但是,我的任务相当有限,这意味着我不能(不应该)修改任何表通常,结构,连接或数据库结构只创建如上所述的更新查询。
是否可以使用在另一个表上计算的查询输出更新表的字段值,而不加入MS Access中的两个表?
编辑1:
经过进一步研究,函数DCount()可能能够提供我正在寻找的结果,我会测试它。
答案 0 :(得分:0)
编辑:我写了一个更复杂的答案,甚至可能在Access中没有用(它可以在MS SQL-Server中使用)。反正。
您需要的是一个始终为您的更新的连接条件。您可以使用is not null
:
SELECT s.*, a.itemCount
FROM statisticsTable as s
INNER JOIN
(
SELECT count(*) as itemCount
from tempTable
) as a
on s.[some field that is always populated] is not null
and a.itemCount is not null