【问题标题】:SQL - How to join tables but keep all values for a particular attributeSQL - 如何连接表但保留特定属性的所有值
【发布时间】:2020-02-01 23:20:50
【问题描述】:

我希望有人可以帮助我解决这个问题。我在 ORACLE 中有两个表。

Table A

Date      Count
03.10.19  10
01.10.19  5
30.09.19  15

表 B

Date      Count
03.10.19  16
02.10.19  10
29.09.19  2

有没有办法加入他们,所以我有一个看起来像这样的表:

 Date      Table_A Count  Table_B Count 
 03.10.19  10             16
 02.10.19  0              10
 01.10.19  5              0
 30.09.19  15             0
 29.09.19  2              2

【问题讨论】:

  • 最后一行是否应该是 29.09.19 0 2 而不是 29.09.19 2 2,因为 29.09.19 没有出现在 Table A 中?

标签: mysql sql oracle join


【解决方案1】:

您需要FULL OUTER JOINCOALESCE。试试看:

SELECT COALESCE(a.DATE, b.DATE) Date
    ,COALESCE(a.Count, 0) Table_A_Count
    ,COALESCE(b.Count,0 ) Table_B_Count
FROM TableA a
FULL OUTER JOIN TableB b ON a.DATE = b.DATE

Demo

【讨论】:

    【解决方案2】:

    MySQL 和 Oracle 都支持USING。这稍微简化了查询:

    SELECT Date ,COALESCE(a.Count, 0) as Table_A_Count,
           COALESCE(b.Count,0 ) Table_B_Count
    FROM TableA a FULL OUTER JOIN
         TableB b 
         USING (Date);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多