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

SQL统计:如何计算ToolCode在WorkCenter字符串中匹配的行数?

解决WorkCenter字段包含ToolCode值的分组统计问题

需求说明

统计JT_WorkCenter表中WorkCenter字段包含JT_ToolCode表ToolCode字段值的行数,并按ToolCode分组汇总。

示例数据

  • JT_ToolCode表ToolCode列数据:Drill、Screwdriver、Saw
  • JT_WorkCenter表WorkCenter列数据:Screwdriver1、Drill1、Saw2、Saw3、Screwdriver15、Drill 12、Saw10

期望结果

每个ToolCode对应的匹配行数:Drill:2,Saw:3,Screwdriver:2

问题分析

你之前的SQL存在两个问题:

  • 用Left(Workcenter,Len(ToolCode))仅能匹配ToolCode在WorkCenter开头且长度完全一致的内容,无法处理像Drill 12这种ToolCode后带空格的情况,匹配逻辑不严谨
  • 分组时错误加入了WorkCenter,导致统计结果被拆分,无法得到每个ToolCode的总匹配数

正确SQL示例

使用模糊匹配LIKE判断包含关系,结合LEFT JOIN确保所有ToolCode都能被统计:

SELECT 
    tc.ToolCode,
    COUNT(wc.WorkCenter) AS MatchCount
FROM JT_ToolCode tc
LEFT JOIN JT_WorkCenter wc 
    ON wc.WorkCenter LIKE '%' + tc.ToolCode + '%'
GROUP BY tc.ToolCode

代码说明

  • LEFT JOIN:保留JT_ToolCode中所有ToolCode记录,即使没有匹配的WorkCenter行也会显示0
  • LIKE '%' + tc.ToolCode + '%':判断WorkCenter字符串中是否包含对应ToolCode,适配ToolCode在任意位置的情况
  • 仅按tc.ToolCode分组:确保每个ToolCode只统计一次总匹配行数

验证结果

用示例数据运行上述SQL,会得到如下结果:

ToolCodeMatchCount
Drill2
Screwdriver2
Saw3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:55:01