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

如何在SQL视图中新增列并基于条件从其他行获取英文名称值

创建满足需求的SQL视图方案

针对你的需求——在视图中新增English Name列,规则为意大利行取同id下比利时/西班牙的名称,其他国家直接用自身name——以下是两种通用的实现方案:

方案一:自连接方式

通过自连接关联同id下的比利时或西班牙行,获取对应英文名称:

CREATE VIEW country_names_with_english AS
SELECT 
    t.id,
    t.country,
    t.name,
    CASE 
        WHEN t.country = 'Italy' THEN COALESCE(t_eng.name, t.name)
        ELSE t.name
    END AS "English Name"
FROM your_table t
LEFT JOIN your_table t_eng
    ON t.id = t_eng.id
    AND t_eng.country IN ('Belgium', 'Spain');

说明:

  • COALESCE用于兜底:如果同id下没有比利时或西班牙的行,会 fallback 到意大利行自身的name
  • 替换your_table为实际表名即可使用

方案二:窗口函数方式

利用窗口函数按id分组,直接提取同组内的英文名称,无需连接操作:

CREATE VIEW country_names_with_english AS
SELECT 
    id,
    country,
    name,
    CASE 
        WHEN country = 'Italy' THEN 
            MAX(CASE WHEN country IN ('Belgium', 'Spain') THEN name END) OVER (PARTITION BY id)
        ELSE name
    END AS "English Name"
FROM your_table;

说明:

  • 窗口函数OVER (PARTITION BY id)确保仅在同id范围内查找英文名称
  • 若同id下比利时和西班牙的名称不一致,可调整逻辑指定优先级(比如优先取比利时的名称,将MAX内的条件改为WHEN country = 'Belgium' THEN name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:15:29