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

基于同表现有字段新增name列的SQL实现方案咨询

实现方案:新增对应分组的英文名称列

可以通过CASE语句结合窗口函数或者自连接两种方式实现需求,以下是具体方案:

一、CASE语句结合窗口函数

这种方法无需额外关联表,通过窗口函数将同一no和country分组下的英文翻译值映射到每一行。假设每个no+country分组最多只有一条英文(language='en')记录,用MAX()聚合函数可精准提取该值:

SELECT
    no,
    country,
    language,
    translatedName,
    MAX(CASE WHEN language = 'en' THEN translatedName END) OVER (PARTITION BY no, country) AS name
FROM
    your_table_name;

说明:

  • CASE WHEN language = 'en' THEN translatedName END筛选出当前分组里的英文翻译值,其他行该位置为NULL
  • MAX()函数忽略NULL,取分组内的有效英文翻译值
  • OVER (PARTITION BY no, country)指定分组依据,确保每个no+country组内的所有行都能拿到对应的英文名称

二、自连接实现

通过左连接原表自身,匹配同一no+country下的英文记录,保留原表所有行的同时获取英文名称:

SELECT
    t1.no,
    t1.country,
    t1.language,
    t1.translatedName,
    t2.translatedName AS name
FROM
    your_table_name t1
LEFT JOIN
    your_table_name t2 ON t1.no = t2.no AND t1.country = t2.country AND t2.language = 'en';

说明:

  • 使用LEFT JOIN确保原表(t1)的所有行都被保留,即使某个no+country分组没有英文记录,name列会显示NULL
  • 连接条件t2.language = 'en'精准匹配分组内的英文翻译行

内容的提问来源于stack exchange,提问作者Avani Agrawal Nath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:27:03