我在Access中有一个相关的子查询,它可以为每个被评估的人运行一个评级的总计。我想知道如何插入一个计数器来跟踪运行总数中添加了多少记录,这样我就可以用它来计算每个人的平均评分,计算运行总数/计数。对于经验丰富的人来说,这可能非常简单,但我还没有设法让它工作,并且可以使用任何可用的帮助来加速我的过程。到目前为止,这是我的代码:
SELECT FieldEval1.EvaluateeID, FieldEval1.EvalDate, FieldEval1.EvalSkillVal, FieldEval1.EvalSkillVal,
(SELECT Sum(FieldEval2.EvalSkillVal)
FROM FieldEvaluations AS FieldEval2
WHERE FieldEval2.EvaluateeID = FieldEval1.EvaluateeID AND FieldEval2.EvalDate <= FieldEval1.EvalDate) AS SkillTotal
FROM FieldEvaluations AS FieldEval1;
到目前为止,我正在努力为每个人创建运行总计。
答案 0 :(得分:1)
在澄清我的问题以及我需要获得的结果后,在收到其他人的帮助后,我想出了以下代码:
SELECT FieldEval1.EvaluateeID, FieldEval1.EvalDate, FieldEval1.EvalSkillVal,
(SELECT Avg(FieldEval2.EvalSkillVal)
FROM FieldEvaluations AS FieldEval2
WHERE ((FieldEval2.EvalSkillVal)>0) AND FieldEval2.EvaluateeID = FieldEval1.EvaluateeID AND FieldEval2.EvalDate <= FieldEval1.EvalDate) AS SkillAvg
FROM FieldEvaluations AS FieldEval1
WHERE (((FieldEval1.EvalSkillVal)>0));
此代码将为我提供每个人的平均评分,同时忽略存在零值的记录(零表示未对该类别中的该人执行评级)。
答案 1 :(得分:0)
我没有用子查询作为列来编写SQL。通常更清楚(和IIRC,标准)使用连接。 Here's an example并附上解释。
使用该表单进行小于比较和GROUP BY后,运行总计看起来非常简单。