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

求实现指定列映射逻辑的动态SQL查询语句

问题描述

现有输入数据表:

col1    Col2    Col3
----   ------   -----
R1      Rajesh   R1
R2      Rohan    R2
R3      venkat   R3
R4      Total    R1
R4      Total    R2
R4      Total    R3

期望生成如下结果表,其中Col4的值为Col3匹配Col1对应的Col2值:

Col1   Col2    Col3  Col4
----   ----   -----  ----
R1    Rajesh  R1    Rajesh
R2    Rohan   R2    Rohan
R3    venkat  R3    Venkat
R4    Total   R1    Rajesh
R4    Total   R2    Rohan
R4    Total   R3    Venkat
解决方案

可以通过自连接实现需求,将表自身关联,用Col3匹配另一条记录的Col1,从而获取对应的Col2值作为Col4。以下是通用SQL查询语句:

SELECT 
    t.Col1,
    t.Col2,
    t.Col3,
    -- 如需统一首字母大写,可根据数据库类型调整函数:
    -- Oracle: INITCAP(t2.Col2)
    -- SQL Server: UPPER(LEFT(t2.Col2,1)) + LOWER(SUBSTRING(t2.Col2,2,LEN(t2.Col2)))
    -- MySQL: CONCAT(UPPER(LEFT(t2.Col2,1)), LOWER(SUBSTRING(t2.Col2,2)))
    t2.Col2 AS Col4
FROM 
    your_table t
LEFT JOIN 
    your_table t2 ON t.Col3 = t2.Col1;

说明

  1. 将原表别名为t作为主表,关联自身别名为t2,关联条件t.Col3 = t2.Col1用于匹配Col3对应的目标Col1记录,进而获取对应Col2值。
  2. 针对输出中venkat转为Venkat的大小写需求,可根据使用的数据库类型调用对应转换函数(注释已列出主流数据库实现方式)。
  3. 替换语句中的your_table为实际数据表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:17