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

基于关联表字段统计处置类型数量的SQL查询优化需求

基于关联表字段统计处置类型数量的SQL查询优化需求

看起来你现在需要把关联查询的结果按**处置类型(Disposition)**分组,统计每种处置对应的零件数量,而不是把总QTY重复显示在每一行对吧?我来帮你调整一下SQL语句。

首先先理清楚你的核心需求:

  • 关联tbRecords和tbInspectedParts两张表,通过tbRecords.id和tbInspectedParts.eRecordId关联
  • 针对指定的tbRecords.id(比如示例里的7998),统计每个Disposition类型出现的次数
  • 保留eRecordId、Part这些关键关联字段,同时可以选择保留总检验数量

那可以用GROUP BY子句来实现分组统计,配合COUNT()函数计算每种处置的数量,具体SQL语句如下:

SELECT 
    tbInspectedParts.eRecordId, 
    tbInspectedParts.Disposition, 
    COUNT(tbInspectedParts.id) AS DispositionQty, -- 统计当前处置类型对应的零件数量
    tbRecords.QTY AS TotalInspectedQty, -- 可选:保留该记录的总检验数量
    tbRecords.Part
FROM 
    [mrbDB].[dbo].[tbRecords] 
INNER JOIN 
    tbInspectedParts ON tbRecords.id = tbInspectedParts.eRecordId 
WHERE 
    tbRecords.id = 7998
GROUP BY 
    tbInspectedParts.eRecordId, 
    tbInspectedParts.Disposition, 
    tbRecords.QTY, 
    tbRecords.Part
ORDER BY 
    tbInspectedParts.Disposition; -- 可选:按处置类型排序,方便查看结果

这条语句执行后,就能得到你想要的结果:

eRecordIdDispositionDispositionQtyTotalInspectedQtyPart
799811107845
799822107845
799834107845
799842107845
799851107845

这里给你解释几个关键点:

  • COUNT(tbInspectedParts.id):因为每个处置记录对应一条tbInspectedParts数据,所以统计id的数量就是该处置类型的零件数
  • GROUP BY后面必须包含所有非聚合的字段(也就是SELECT里除了COUNT之外的字段),这样SQL才能正确分组计算
  • 如果你不需要显示总检验数量(TotalInspectedQty),直接把它从SELECT和GROUP BY里去掉就行,只保留你需要的字段

另外,如果tbInspectedParts里的Disposition可能存在NULL值,你可以用COUNT(*)代替COUNT(tbInspectedParts.id),不过从你的示例数据来看应该不存在这种情况。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:43:02