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

在DBeaver中使用SQL查询合并同一ID的收发地址行

同一ID发货/收货信息合并的SQL实现方案

需求说明

原数据中同一追踪ID的发货(From)、收货(To)信息分属两行,需将其合并为一行,同时保留发货地城市、州和收货地城市、州信息。

原数据表结构及数据

IDTypeCityState
1234FromCAABC
1234ToWAXYZ

目标数据表结构

IDFrom CityFrom StateTo CityTo State
1234CAABCWAXYZ

方法一:自连接(Self Join)

通过ID将原表自身关联,分别筛选出发货和收货记录后合并字段。

CREATE TABLE new_table AS
SELECT 
    f.ID,
    f.City AS `From City`,
    f.State AS `From State`,
    t.City AS `To City`,
    t.State AS `To State`
FROM 
    original_table f
INNER JOIN 
    original_table t ON f.ID = t.ID
WHERE 
    f.Type = 'From'
    AND t.Type = 'To';

说明:

  • 替换original_table为你的原表名称,new_table为要创建的新表名称
  • 若仅需查询结果而非创建新表,移除CREATE TABLE new_table AS语句即可

方法二:条件聚合(Conditional Aggregation)

通过CASE WHEN结合聚合函数,按ID分组提取对应类型的字段值,兼容性更强,适用于多数数据库。

CREATE TABLE new_table AS
SELECT 
    ID,
    MAX(CASE WHEN Type = 'From' THEN City END) AS `From City`,
    MAX(CASE WHEN Type = 'From' THEN State END) AS `From State`,
    MAX(CASE WHEN Type = 'To' THEN City END) AS `To City`,
    MAX(CASE WHEN Type = 'To' THEN State END) AS `To State`
FROM 
    original_table
GROUP BY 
    ID;

说明:

  • 由于同一ID对应Type='From'和Type='To'各一条记录,使用MAX聚合函数可精准提取唯一值
  • 同样可替换表名实现创建新表或仅查询结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:22:34