MS Access:DSUM仅对具有相同日期的行

时间:2018-03-16 09:42:21

标签: sql ms-access ms-access-2013

我有以下查询,其中周是日期字段,市场和团队是文本字符串。

SELECT t1.Week, t1.Market, t1.Team, Sum(t1.Audits) AS CFS_Audits, Sum(t1.Incorrect) AS CFS_Incorrect
FROM t1
GROUP BY t1.Week, t1.Market, t1.Team;

我的目标是有一个使用DSUM的附加字段来计算在给定周内发生的所有审核。因此,该字段应具有比CFS_Audits更低的粒度,CFS_Audits在周 - 市场 - 团队级别进行细分 我尝试了以下代码X: DSUM("Audits", "t1", "[Week]="&[Week]),该代码在我发现的最近问题here中提出,但结果字段始终为NULL。我怀疑这可能是因为在给定的示例中,字段存储为数字而不是日期。或许我完全采取了错误的做法。 在线教程也没有帮助,因为在所有情况下我都发现它们提供了带有硬编码标准的DSUM标准参数的示例,而在这里我需要逐行评估。

谢谢

1 个答案:

答案 0 :(得分:1)

Access SQL中的日期非常难以使用

最简单的方法是避免任何类型转换,就是使用子查询而不是域聚合。

SELECT t.Week, t.Market, t.Team, Sum(t.Audits) AS CFS_Audits, Sum(t.Incorrect) AS CFS_Incorrect, (SELECT Sum(s.Audits) FROM t1 s WHERE s.Week = t.Week) As X
FROM t1 t
GROUP BY t.Week, t.Market, t.Team;

或者,您可以在DSUM中使用日期,但它应该被# octothorpes包围,格式为YYYY-MM-DD或MM / DD / YYYY:

SELECT t.Week, t.Market, t.Team, Sum(t.Audits) AS CFS_Audits, Sum(t.Incorrect) AS CFS_Incorrect, DSUM("Audits", "t1", "[Week]=" & Format([Week], "\#yyyy-mm-dd\#") As X
FROM t1 t
GROUP BY t.Week, t.Market, t.Team;