在与不同的表结构的两个DB2表数据值之间的差(Difference between data val

2019-10-30 08:47发布

我对大型机“老”和“新”两个DB2表。 这些表有各1个十亿条记录,截至目前有70-80列。 这些表都可以从两个不同的系统填充,所以表结构不相同,即有在列共享其具有用于不同的数据值进行比较的一些常见的列的一些差异与这两个表。 例如 :

OLD
id A B C  
1  x y z
1  x y z
3  m n o
4  e f g

NEW
id B C D E 
1  y a a b
1  y a a b
2  n o c d
4  g g l m

因此,在上面的例子中“旧”和“新的”具有其具有用于差异并且在公共列具有不同值的行要被比较的列B和C将被写入到具有所有共同的列另一个表。

我也看了一下除外及工会功能可以使用,但这些额外的限制(在表结构的差异,而不是所有的IDS都是为了存在于)使查询太复杂。

有没有更简单的方法来做到这一点? 我不能在主机上安装任何软件/第三方工具。 请帮忙。

谢谢。

Answer 1:

这是我的通用如何比较表。

如何检索仅是不是另一个表中的一个表(DB1)的行(DB2)

修改只使用两列。

SELECT 'AFTER', A.* FROM      
(SELECT b,c FROM &AFTER         
EXCEPT                        
 SELECT b,c FROM &BEFORE) AS A  
UNION                         
SELECT 'BEFORE', B.* FROM     
(SELECT b,c FROM &BEFORE        
EXCEPT                        
 SELECT b,c FROM &AFTER) AS B 

裹在create table语句上面,如果你需要保存的结果。



文章来源: Difference between data values in two DB2 tables with different table structures