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表。这样做的一个优点是,您可以索引该表以加快最终查询的速度。