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

SQL select的case语句如何返回多列避免重复别名自动加后缀

你出现别名后缀的核心原因是:SELECT 子句中每一个独立的表达式都会被识别为单独的一列,你为FIR/SEC/THI分别写了3个重复别名的CASE表达式,数据库会默认追加后缀区分多列,不会自动合并逻辑。

正确的写法是每一个输出列对应一个独立的CASE表达式,把该列的所有判断分支都整合到同一个CASE内,调整后的SQL如下:

select
    distinct Layout,
    case 
        when Layout = 'Midd' then 'mid'
        when Layout = 'Ser' then null
        when Layout = 'Cloud' then ser
    end as FIR,
    case 
        when Layout = 'Midd' then 'mid'
        when Layout = 'Ser' then null
        when Layout = 'Cloud' then mid
    end as SEC,
    case 
        when Layout = 'Midd' then 'mid'
        when Layout = 'Ser' then null
        when Layout = 'Cloud' then clo
    end as THI
from SUMMARY

上述逻辑完全匹配你的需求:

  • Layout为Midd时,三个列都返回mid
  • Layout为Ser时,三个列都返回null
  • Layout为Cloud时,三个列分别返回对应字段的值

如果你的表中还有其他Layout取值,可在每个CASE末尾加else null兜底(默认无匹配时CASE也会返回null,可不加)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:05