You need to enable JavaScript to run this app. MS Access父子关联表SQL查询:统计团队数与涂装值总和
优惠活动
大模型
产品
解决方案
定价
更多

MS Access父子关联表SQL查询:统计团队数与涂装值总和

MS Access 关联表分组查询适配代码

现有代码的基础语法问题

你编写的初始SQL存在INNER JOIN子句括号未闭合的语法错误,直接执行会触发报错。在原有按TackName分组统计PaintingValue总和的逻辑基础上,可根据实际统计口径选择对应的合法查询代码:

统计口径1:每个TackName分组下关联的不重复TeamName数量

适用于需要统计每个任务对应的协作团队总数的场景,避免同一TeamName的多条关联记录被重复计数:

  • 若使用ACE引擎的新版MS Access(2016及以上版本,支持去重计数语法),可直接执行:
SELECT 
  Table1.TackName,
  Sum(Table2.PaintingValue) AS SumofPaintingValue,
  Count(DISTINCT Table2.TeamName) AS DistinctTeamCount
FROM Table1
INNER JOIN Table2
  ON Table1.ID = Table2.fgk
GROUP BY Table1.TackName;
  • 若使用Jet引擎的旧版MS Access(2007及更早版本,不支持COUNT(DISTINCT)语法),可通过嵌套子查询实现等效去重逻辑:
SELECT 
  T1.TackName,
  Sum(T2.PaintingValue) AS SumofPaintingValue,
  Count(sub.TeamName) AS DistinctTeamCount
FROM Table1 AS T1
INNER JOIN Table2 AS T2
  ON T1.ID = T2.fgk
INNER JOIN (
  SELECT DISTINCT fgk, TeamName 
  FROM Table2 
  WHERE TeamName IS NOT NULL
) AS sub
  ON T1.ID = sub.fgk
GROUP BY T1.TackName;

统计口径2:每个TackName分组下关联的TeamName非空记录总次数

适用于不需要去重、直接统计带TeamName标识的关联子记录总数的场景,全版本MS Access兼容:

SELECT 
  Table1.TackName,
  Sum(Table2.PaintingValue) AS SumofPaintingValue,
  Count(Table2.TeamName) AS TeamRecordCount
FROM Table1
INNER JOIN Table2
  ON Table1.ID = Table2.fgk
GROUP BY Table1.TackName;

执行注意事项

  • MS Access的SQL兼容模式下,多表INNER JOIN不需要在表关联块外层包裹冗余括号,原代码中多余的起始括号是触发语法错误的核心原因
  • 写在Count()中的字段如果存在NULL值,会自动被排除在统计范围外;如果需要统计分组内的全部关联记录,可将字段名替换为*实现全记录计数

内容的提问来源于stack exchange,提问作者bahman jafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 07:06:05