Sql DSum()域作为子查询?

Sql DSum()域作为子查询?,sql,function,ms-access,subquery,Sql,Function,Ms Access,Subquery,我运行以下查询: SELECT job_code_desc, SumOfDowntime AS DowntimeTotal, Round(DSum("[SumofDowntime]","DT","[SumOfDowntime]>=" & [DowntimeTotal] & "")/DSum("[SumOfdowntime]","DT"),3) AS CumPct FROM (SELECT pareto_downtime_detail_tbl.job_code_d

我运行以下查询:

SELECT
job_code_desc,
SumOfDowntime AS DowntimeTotal,
Round(DSum("[SumofDowntime]","DT","[SumOfDowntime]>=" & [DowntimeTotal] & "")/DSum("[SumOfdowntime]","DT"),3) AS CumPct

FROM
  (SELECT 
  pareto_downtime_detail_tbl.job_code_desc, 
  Sum(pareto_downtime_detail_tbl.downtime) AS SumOfDowntime

  FROM 
  pareto_downtime_detail_tbl

  WHERE
  (((pareto_downtime_detail_tbl.job_code_desc) Not Like "*break*" 
  AND (pareto_downtime_detail_tbl.job_code_desc) Not Like "*prep*"))

  GROUP BY 
  pareto_downtime_detail_tbl.job_code_desc) AS DT;
并获取一个错误:

Microsoft Access数据库引擎找不到输入表或 查询“DT”。确保它存在并且其名称拼写正确 正确。”

DSum()
函数的域可以来自子查询吗?还是必须从“永久”表或查询中调用?当我将子查询(DT)保存为永久查询并运行上面的查询时

SELECT 
pareto_lift_downtime_detail_qry.job_code_desc, 
pareto_lift_downtime_detail_qry.SumOfdowntime AS DowntimeTotal, 
Round(DSum("[SumofDowntime]","pareto_lift_downtime_detail_qry","[SumOfDowntime]>=" & [DowntimeTotal] & "")/DSum("[SumOfdowntime]","pareto_lift_downtime_detail_qry"),3) AS CumPct

FROM 
pareto_lift_downtime_detail_qry;
它成功运行,但性能明显滞后。然后,我使用新的查询,
pareto\u lift\u down\u detail\u qry
,作为生成表查询,然后引用此新表。这符合我的要求,速度适当,但我有两个理由不使用生成表查询。我希望尽可能组织此文件,而且这些数据将由一个几乎没有访问知识和查询/数据库经验的职员每周刷新一次,因此她不会每周都进行新的make table查询。

“DSum()函数的域可以来自子查询吗?”

没有

或者它必须从“永久”表或查询中调用


是。

re:“这些数据将由一名不懂访问知识、没有查询/数据库经验的职员每周刷新一次,因此她不会每周都进行新的make table查询”-如果您为她生成一个宏或一个具有“每周刷新”功能的表单,则不需要这样做“按钮,调用完成任务所需的代码。我想我不认为可以使用宏来重复使用相同名称的make表查询。”。从头开始编写VB代码超出了我疲惫的头脑所能承受的范围——我将玩一下宏,看看我能从哪里得到。@TrevorD抱歉,这个答案太肤浅了,但我在试图弄清楚您希望查询做什么时迷失了方向。如果你发布起始数据的样本和该样本的期望输出,我们可能会为你提供一个可行的查询。另一方面,Gord的建议是可靠的。为用户提供一种手动方法,以便在需要时重新加载DT表。这样做的一个优点是,您可以索引该表以加快最终查询的速度。