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

SQL嵌套CASE表达式问题:合并两个MAX(CASE)逻辑获取partner_id

解决方案:合并两个SQL表达式获取partner_id

问题分析

你的需求是优先从key_id='program.partner'的identifier字段拆分后取值,若该值为NULL,则取key_id='partner'对应的identifier值。原写法存在两个问题:

  1. 语法错误:max(case...)中的case表达式缺少闭合的end;
  2. 逻辑错误:else分支返回空字符串'',而非第一个表达式的有效结果。

正确写法

方法1:使用COALESCE函数(推荐)

COALESCE会返回传入参数中第一个非NULL的值,完美匹配你的需求:

COALESCE(
    MAX(CASE WHEN key_id = 'program.partner' THEN SPLIT(identifier, ':')[6] END),
    MAX(CASE WHEN key_id = 'partner' THEN identifier END)
) AS partner_id

方法2:修正CASE表达式逻辑

如果不想用COALESCE,可以修正原CASE表达式的语法和逻辑:

CASE
    WHEN MAX(CASE WHEN key_id = 'program.partner' THEN SPLIT(identifier, ':')[6] END) IS NOT NULL
    THEN MAX(CASE WHEN key_id = 'program.partner' THEN SPLIT(identifier, ':')[6] END)
    ELSE MAX(CASE WHEN key_id = 'partner' THEN identifier END)
END AS partner_id

说明

  • 两种写法都能实现:优先取program.partner拆分后的值,无值时 fallback 到partner的identifier;
  • 注意SPLIT(identifier, ':')[6]的索引是否符合你的数据结构(多数SQL引擎中数组索引从0开始,[6]对应第7个拆分元素)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:22:14