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

多同列名表Join/Merge:基于日期与品牌合并三表并统一品牌列

解决方案:整合三表所有Date+Brand组合并生成目标表

你当前的查询只以Table-1作为左连接的基准表,这就导致Table-2和Table-3中独有的Date+Brand组合无法被纳入结果集。要实现包含所有表中Brand和Date的完整合并,我们需要先构建一个包含所有唯一Date+Brand组合的数据集,再基于这个数据集关联三个表获取对应字段。

完整SQL语句

SELECT 
    ac.Date,
    ac.Brand,
    t1.Series,
    t1.viewers AS Table_1_Viewers,
    t2.amazon_viewers AS Table_2_Viewers,
    t3.views AS Table_3_Viewers
FROM (
    -- 获取三个表中所有唯一的Date+Brand组合
    SELECT DISTINCT Date, Brand FROM `Table-1`
    UNION ALL
    SELECT DISTINCT Date, Brand FROM `Table-2`
    UNION ALL
    SELECT DISTINCT Date, Brand FROM `Table-3`
) AS ac
LEFT JOIN `Table-1` t1 
    ON ac.Date = t1.Date AND ac.Brand = t1.Brand
LEFT JOIN `Table-2` t2 
    ON ac.Date = t2.Date AND ac.Brand = t2.Brand
LEFT JOIN `Table-3` t3 
    ON ac.Date = t3.Date AND ac.Brand = t3.Brand
ORDER BY ac.Date DESC, ac.Brand;

代码说明

  1. 构建完整组合集:
    • 用UNION ALL合并三个表的Date和Brand字段,再通过DISTINCT去重,确保我们得到所有存在于任意一个表中的日期-品牌组合,不会遗漏任何一条独立记录。
  2. 左连接关联三表:
    • 以完整的组合集作为主表,分别左连接Table-1、Table-2、Table-3,关联条件都是Date和Brand的匹配。这样无论某个组合只存在于哪张表,都能被保留,不存在的字段会自动填充为NULL。
  3. 字段映射:
    • Series仅在Table-1中存在,所以从Table-1中获取,没有匹配的组合会显示NULL;
    • 三个观众数字段分别从对应表中取出,并重命名为你需要的格式。

期望输出结果

DateBrandSeriesTable_1_ViewersTable_2_ViewersTable_3_Viewers
12/1/2018TESTTEST_SERIES100NULLNULL
10/15/2018MTVGOT1000NULL1000
12/1/2018TESTViking485632856325NULL
12/1/2018TESTAnother SeriesNULL200NULL
10/15/2018POGONULLNULL1000NULL
7/1/2019No_MatchTEST_SERIESNULLNULL100
12/1/2018TEST-5NULLNULLNULL953022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:00