Db2 переносит данные из строки в одной таблице в столбец в другой таблице - PullRequest
0 голосов
/ 22 марта 2012

У меня есть схема, которая выглядит следующим образом

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');

Теперь он работает нормально, когда есть два типа для каждого идентификатора, и завершается ошибкой с кодом ошибки sql 407 , если строка для типа отсутствует. Я пытался использовать IFNULL, COALESCE, но, похоже, ничего не работает. Я знаю, что это проблема, которая должна была решаться много раз, но нигде не могла получить прямой ответ.

1 Ответ

1 голос
/ 22 марта 2012

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);
...