将来自不同数据库的表与相同数据但不同列数进行比较

时间:2015-11-11 16:41:54

标签: sql oracle oracle11g oracle-sqldeveloper oracle12c

在Oracle SQL Developer中,如何比较A + B = C表中的三个表?我必须验证A和B的所有数据是否都转换为C.另外,表A与B和C位于不同的数据库中,它们位于同一个数据库中。

1 个答案:

答案 0 :(得分:0)

我假设不同的数据库有一列id。假设它永远不是full outer join,您可以使用NULL。但是,使用union all和聚合可能更容易。

您可以使用以下查询获取不同的ID列表:

select id, sum(inab) as inab, sum(inc) as inc
from ((select id, 1 as inab, 0 as inc
       from a
      ) union all
      (select id, 1 as inab, 0 as inc
       from b
      ) union all
      (select id, 0 as inab, 1 as inc
       from c
      ) 
     ) c
group by id
having sum(inab) <> 1 or sum(inc) <> 1;

实际上,您可能会有多个列。注意:如果A + B或C中有重复项,这只能保证副本出现在两者中(而不是两者都有相同的计数)。