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

为不同门店追加对应配送路线ID的SQL条件语句编写咨询

不同门店追加对应配送路线ID的SQL条件语句编写咨询

嘿,我来帮你搞定这个需求!你现在需要给每个门店自动匹配对应的配送路线ID,然后把它拼接到门店编号后面对吧?其实用SQL里的CASE语句就能轻松实现,它就像我们平时写的多分支if-else逻辑,刚好适配你这8个固定门店的场景。

给你改好的SQL示例,你只需要把剩下的门店-路线对应关系补充进去就行:

SELECT 
  id as shipment_id, 
  purchase_order, 
  -- 根据不同门店匹配路线ID并拼接
  CONCAT(ship_to, '-', 
    CASE ship_to
      WHEN '4552' THEN 'D1'
      WHEN '4860' THEN 'D2'
      -- 在这里继续添加其他门店的对应规则,比如
      -- WHEN 'XXX' THEN 'D3'
      -- ... 剩下6个门店依次补充
      ELSE '' -- 如果遇到未匹配的门店,可以留空或者设置默认值
    END
  ) AS ship_to_with_route,
  created_at, 
  ship_on
FROM `table1-production.warehouser_.fulfillment_orders`
WHERE reservation_id = 1730
ORDER BY created_at asc

如果以后门店数量变多或者路线经常调整,我更推荐你建一个门店-路线映射表(比如叫store_route_mapping),表里只需要存store_id和route_id两列,然后通过关联查询来实现,这样后续维护起来更方便,不用每次改主SQL:

SELECT 
  fo.id as shipment_id, 
  fo.purchase_order, 
  CONCAT(fo.ship_to, '-', srm.route_id) AS ship_to_with_route,
  fo.created_at, 
  fo.ship_on
FROM `table1-production.warehouser_.fulfillment_orders` fo
-- 左关联映射表,确保即使没有匹配路线的门店也能正常返回
LEFT JOIN store_route_mapping srm 
  ON fo.ship_to = srm.store_id
WHERE fo.reservation_id = 1730
ORDER BY fo.created_at asc

这样不管是现在的8个门店,还是以后新增门店,只要在映射表里维护数据就行,非常灵活~

备注:内容来源于stack exchange,提问作者Cesar Mendoza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:48:14