Db2将数据从一个表中的行迁移到另一个表中的列

时间:2012-03-22 17:41:38

标签: sql db2 data-migration

我有一个看起来像这样的架构

table 1
-------
ID TYPE VALUE
==============
1 A 10
1 B 200
2 A 20
2 B 500


table 2
-------------
ID typeA typeB
==============
1 10 200
2 20 500

我的迁移脚本是

update table2 set typeA = (select t1.value from table1 t1 
where t1.ID = table2.ID and t1.type = 'A'),
typeB = (select t1.value from table1 t1 where t1.ID = table2.ID and t1.type='B');

现在,当每个id有两种类型时,它可以正常工作,如果缺少某个类型的行,则会失败,并显示sql错误代码407。我尝试使用IFNULL,COALESCE,但似乎没有任何效果。我知道这是一个必须多次解决但在任何地方都无法得到直接答案的问题。

1 个答案:

答案 0 :(得分:1)

COALESCE应该适合你,这会给你一个错误吗?

update table2 t2
set typeA = COALESCE((select t1.value
                        from table1 t1
                       where t1.ID = t2.ID
                         and t1.type = 'A'), 0),
    typeB = COALESCE((select t1.value
                        from table1 t1
                       where t1.ID = t2.ID
                         and t1.type='B'), 0);