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

如何使用SQL的CASE语句根据另一列值填充目标列空字段

需求背景

我是SQL初学者,未接受过系统的SQL相关培训,因工作需要临时使用SQL,在此先行感谢各位的帮助。
当前我有一个返回3列数据的查询,其中column3存在部分空单元格,需要根据column1的取值填充这些空值,规则如下:

  • 当column1值为'Individual'时,对应为空的column3显示'Individual'
  • 当column1值为'group'时,对应为空的column3显示'group'
  • 其余场景下column3保持原有值不变

我之前尝试编写的SQL语句存在错误,代码如下:

CASE column1 = 'Individual' then Column3 should show 'Individual' not empty, but if column1 = 'group' them column3 needs to show "group" else no change.  

SELECT column1, column2, column3,  
CASE  
    WHEN column1 = 'Individual' THEN Column3 = 'Individual'  
    WHEN column1 = "Group' THEN comlumn3 = 'Group'  
END  
FROM tablename
正确实现方法

你之前写的语句有几个明显的语法错误:

  • 字符串引号混用,出现了单双引号不配对的问题,还存在列名拼写错误
  • CASE表达式的THEN后直接写需要返回的值即可,不需要写列名 = 值的赋值格式
  • 缺少ELSE分支,不满足前两个条件的场景会默认返回NULL,无法实现“其余情况保持不变”的需求
  • 没有做空值判断,会把原本非空的column3值也覆盖掉
  • CASE表达式结束后需要加别名,才能作为结果列正常返回

修正后的可直接运行的SQL如下:

SELECT 
    column1,
    column2,
    CASE
        WHEN column3 IS NOT NULL THEN column3
        WHEN column1 = 'Individual' THEN 'Individual'
        WHEN column1 = 'group' THEN 'group'
        ELSE column3
    END AS column3
FROM tablename;

补充说明:如果你的column3里的“空单元格”是空字符串('')而非数据库标准NULL值,只需要把判断条件column3 IS NOT NULL替换为column3 != ''即可适配。

内容的提问来源于stack exchange,提问作者World on Fire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:54:22