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

如何在JOIN中结合CASE WHEN处理NULL并按层级关联两张表?

动态层级关联的SQL实现

你需要的这种按Target表字段非空优先级递进的关联逻辑,直接用AND+OR组合条件就能实现,不用复杂的CASE WHEN。核心思路是按优先级依次判断Target的字段状态,匹配对应层级的Sales字段,具体SQL修改如下:

SELECT * 
FROM Sales s
JOIN Target t 
    ON (t.City IS NOT NULL AND s.City = t.City)
    OR (t.City IS NULL AND t.State IS NOT NULL AND s.State = t.State)
    OR (t.City IS NULL AND t.State IS NULL AND s.Country = t.Country)

逻辑说明

  • 第一行条件:当Target的City不为空时,仅按City字段关联两张表
  • 第二行条件:当Target的City为空但State不为空时,降级按State字段关联
  • 第三行条件:当Target的City和State都为空时,最终按Country字段关联

注意事项

如果存在同一层级下多个匹配项的情况(比如Target的City为空时,同State下的所有Sales记录都会被关联),可以根据业务需求添加聚合函数(比如SUM(Sales_Amt))或者额外过滤条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:41:00