INSERT INTO table(id, A, B) SELECT get_next_id('id_seq', next_id, 1000), id, CASE WHEN B = 'B1' THEN 'A2' WHEN B = 'B2' THEN 'A3' END FROM table WHERE B IN ('B1', 'B2');