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

SQL列内差异统计求助:箱号格式不同致统计结果错误

解决箱号格式不同的总箱数统计问题

首先咱们得把统计逻辑理清楚:总箱数 = 独立箱(无后缀)的数量 + 带后缀子箱对应的母箱去重数量。你之前用固定长度截取的方式可能会踩坑(比如万一有些后缀长度不一致),咱们换更灵活的思路来处理:

分步统计方案

  • 统计独立箱数量:筛选出不含-的箱号,去重后计数
  • 统计母箱数量:筛选出含-的箱号,提取-之前的母箱编号,去重后计数
  • 合并结果:把两个统计结果相加得到总箱数

具体SQL脚本

方式一:子查询直接合并结果

SELECT 
    -- 统计无后缀的独立箱数量
    (SELECT COUNT(DISTINCT FD_E77BE253) 
     FROM 你的表名 
     WHERE FD_E77BE253 NOT LIKE '%-%' AND FD_E77BE253 IS NOT NULL) 
    + 
    -- 统计带后缀的母箱去重数量(用分隔符定位截取更可靠)
    (SELECT COUNT(DISTINCT LEFT(FD_E77BE253, CHARINDEX('-', FD_E77BE253) - 1)) 
     FROM 你的表名 
     WHERE FD_E77BE253 LIKE '%-%' AND FD_E77BE253 IS NOT NULL) 
AS 总箱数;

方式二:用CTE标准化箱号后统计

如果想更清晰地看到每个箱号的归属,可以先把所有箱号统一成“母箱/独立箱”的标准格式,再去重计数:

WITH 标准化箱号 AS (
    SELECT 
        CASE 
            WHEN FD_E77BE253 LIKE '%-%' THEN LEFT(FD_E77BE253, CHARINDEX('-', FD_E77BE253) - 1)
            ELSE FD_E77BE253
        END AS 标准箱号
    FROM 你的表名
    WHERE FD_E77BE253 IS NOT NULL
)
SELECT COUNT(DISTINCT 标准箱号) AS 总箱数
FROM 标准化箱号;

为什么之前的脚本可能出错?

你之前用len(FD_E77BE253) -5截取,默认了后缀是-0001这种固定5位(包括-),但如果存在其他长度的后缀(比如-01、-001),截取结果就会出错。用CHARINDEX('-', ...)定位分隔符位置,能自适应不同的后缀长度,稳定性更高。另外别忘了过滤空值,避免干扰统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:59:18