【问题标题】:Merging tables with two different dates (SQL)合并具有两个不同日期的表 (SQL)
【发布时间】:2020-04-23 15:58:15
【问题描述】:

我正在尝试合并两个具有不同日期字段的表,并且很难找出显示它们的最佳方式...

我有一张桌子:

id    date_1       daily_count
----------------------------
1     1/1/20           1
1     1/2/20           1 
1     1/3/20           2 
2     1/1/20           3 
2     2/1/20           1 

我还有另一个表:

id    date_2 
-------------
1     1/1/20           
1     1/2/20
1     1/2/20      
1     1/4/20 
1     1/7/20          
2     1/4/20           
2     2/1/20           

我想展示类似的东西:

id    date_1    daily_count    date_2    date_2_count
------------------------------------------------------
1     1/1/20         1         1/1/20          1
1     1/2/20         1         1/2/20          2
1     1/3/20         2          null          null
1      null         null       1/4/20          1 
1      null         null       1/7/20          1 
2     1/1/20         3          null          null 
2      null         null       1/4/20          1 
2     2/1/20         1         2/1/20          1 

有可能这样做吗?每当我尝试使用 id 加入这两个表时,我都会在每个 date_1 中不断获得 date_2 的重复值,并且感到非常迷茫.. 任何输入将不胜感激!

【问题讨论】:

    标签: sql date join merge netezza


    【解决方案1】:

    你似乎想要一个full join

    select coalesce(t1.id, t2.id) as id, t1.date, t1.daily_count,
           t2.date, t2.daily_count
    from table1 t1 full join
         (select t2.id, t2.date, count(*) as daily_count
          from table2 t2
          group by t2.id, t2.date
         ) t2
         on t1.id = t2.id and t1.date = t2.date;
    

    【讨论】:

      【解决方案2】:

      是的!重复值仅由加入 id 引起。从外观上看,您需要同时加入 idtable1.date_1 = table2.date_2 才能获得每一行。另一件事(不清楚您是否已经在没有看到查询的情况下执行此操作)是您需要使用full outer join 来确保保留两个表中的值,即使一方没有特定的身份证/日期。

      【讨论】:

        猜你喜欢
        • 2018-03-18
        • 1970-01-01
        • 2013-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        相关资源
        最近更新 更多