You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL 2016多表关联查询统计不同工单号出现次数的方法

报错原因

你触发的is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause是SQL Server的强制校验规则:使用COUNT、SUM这类聚合函数做统计时,SELECT子句里所有未被聚合函数包裹的字段,必须全部写入GROUP BY子句,之前的写法要么遗漏了GROUP BY分组逻辑,要么分组字段和SELECT非聚合字段不匹配。

可直接运行的正确代码

该写法完全适配SQL Server 2016 STD环境,返回结果和你预期的两列格式完全一致:

SELECT
    pf.value AS [Workorder#],
    COUNT(1) AS TotalCount
FROM
    gagestation.dbo.part p
    INNER JOIN gagestation.dbo.part_factor pf ON p.part_id = pf.part_id
    INNER JOIN gagestation.dbo.qcc_file qf ON p.qcc_file_id = qf.qcc_file_id
    INNER JOIN gagestation.dbo.factor f ON pf.factor_id = f.factor_id
WHERE
    f.factor_desc = 'Work Order #'
GROUP BY
    pf.value
ORDER BY
    pf.value
注意事项
  • 不需要额外加DISTINCT关键字:GROUP BY逻辑本身会对pf.value做去重归组,COUNT(1)会统计每个分组下的总记录数,正好对应每个工单号关联的测量记录条数。
  • WHERE条件里的factor_desc字段建议加上表别名f.前缀,避免多表存在同名字段时触发二义性报错。
  • 该查询结果可直接作为Linked Server数据同步的数据源,没有使用SQL Server 2016以上版本的专属语法,跨版本兼容无问题。

内容的提问来源于stack exchange,提问作者Justin Carlson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:51:19