将计数器添加到相关子查询

时间:2016-05-23 21:16:16

标签: sql ms-access counter correlated-subquery running-total

我在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;

到目前为止,我正在努力为每个人创建运行总计。

2 个答案:

答案 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后,运行总计看起来非常简单。