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

如何按分隔符移除sku列末尾的对应值?

问题描述

我正尝试移除sku列中的分隔符(-)及其后面的对应值,恳请提供帮助!

示例表格

containerskuqty
YMLU12345675341641877
YMLU1234567987876554
YMLU1234567987876-191
YMLU1234567987877841
YMLU1234567987877-1106

当前代码

SELECT
    [so].[OrderGroup] as container,
    REVERSE(LEFT(REVERSE([so].[CustomerOrderNumber]),
    CHARINDEX(' ', REVERSE([so].[CustomerOrderNumber]) + ' ') - 1)) AS sku,
    sum([so].[QtyShipped]) as AllocatedQty
FROM [server].[dbo].[table] as so
WHERE [so].Status <> 0
AND [so].CustomerName ='alpha'
AND [so].[OrderGroup] ='YMLU1234567'
GROUP BY  [so].[OrderGroup], REVERSE(LEFT(REVERSE([so].[CustomerOrderNumber]),
          CHARINDEX(' ', REVERSE([so].[CustomerOrderNumber]) + ' ') - 1))

解决方案

你可以在现有sku字段的处理逻辑外层,添加针对-分隔符的字符串截取逻辑,确保只保留分隔符前的内容。修改后的代码如下:

SELECT
    [sub].[OrderGroup] as container,
    -- 处理sku中的'-'分隔符,提取前面的内容
    CASE
        WHEN CHARINDEX('-', sub.sku_part) > 0 THEN LEFT(sub.sku_part, CHARINDEX('-', sub.sku_part) - 1)
        ELSE sub.sku_part
    END AS sku,
    sum(sub.[QtyShipped]) as AllocatedQty
FROM (
    -- 先保留原有的sku提取逻辑,作为中间结果
    SELECT
        [so].[OrderGroup],
        [so].[QtyShipped],
        REVERSE(LEFT(REVERSE([so].[CustomerOrderNumber]),
        CHARINDEX(' ', REVERSE([so].[CustomerOrderNumber]) + ' ') - 1)) AS sku_part
    FROM [server].[dbo].[table] as so
    WHERE [so].Status <> 0
    AND [so].CustomerName ='alpha'
    AND [so].[OrderGroup] ='YMLU1234567'
) AS sub
GROUP BY [sub].[OrderGroup], 
         CASE
             WHEN CHARINDEX('-', sub.sku_part) > 0 THEN LEFT(sub.sku_part, CHARINDEX('-', sub.sku_part) - 1)
             ELSE sub.sku_part
         END

逻辑说明

  1. 用子查询保留你原本的sku提取逻辑,得到中间字段sku_part;
  2. 通过CHARINDEX('-', sku_part)检查是否存在-分隔符:
    • 若存在,用LEFT(sku_part, CHARINDEX('-', sku_part) - 1)截取分隔符前的内容;
    • 若不存在,直接返回原sku_part内容;
  3. 分组时同步使用相同的处理逻辑,保证分组维度与查询字段一致。

如果使用SQL Server 2017及以上版本,也可以用STRING_SPLIT结合TOP 1的简化写法,但上面的写法兼容性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:01:31