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

SQL实现新增列取A/B/C首个非空值并记录对应来源列名

SQL实现按优先级取首个非空值及对应来源列

实现逻辑

  • D列:按照A→B→C的优先级,取第一个不为NULL的值
  • Choice列:标记D列值对应的来源字段名

通用兼容写法(支持所有主流SQL数据库)

用标准SQL的COALESCE函数实现D列取值,用CASE表达式判断来源,写法简洁且无方言兼容问题:

SELECT
    id,
    A,
    B,
    C,
    COALESCE(A, B, C) AS D,
    CASE
        WHEN A IS NOT NULL THEN 'A'
        WHEN B IS NOT NULL THEN 'B'
        ELSE 'C'
    END AS Choice
FROM 替换为你的实际表名;

说明:COALESCE(值1,值2,值3...)是SQL标准函数,作用就是按参数传入顺序返回第一个非NULL值,完全匹配D列的取值规则。

结果验证

代入给出的样例数据执行后,返回结果和预期完全一致:

idABCDChoice
3NULLNULL11C
72NULL52A
1NULL929B

注意事项

如果业务场景中存在A、B、C三个字段全为NULL的情况,上述写法会返回D=NULL、Choice='C',如果需要适配全空场景,可以按需调整CASE表达式的ELSE分支逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:18:48