add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE old_table (
name1 VARCHAR(50),
name2 VARCHAR(50),
origin_date DATE,
var1 VARCHAR(50),
today DATE
);


INSERT INTO old_table (name1, name2, origin_date, var1, today) VALUES
('red_1', 'red', '2010-01-01', 'aaa', '2020-01-01'),
('red_2', 'red', '2011-01-01', 'bbb', '2020-01-01'),
('blue_1', 'blue', '2005-01-01', 'ccc', '2020-01-01'),
('green_1', 'green', '2005-01-01', 'ddd', '2020-01-01');


CREATE TABLE new_table (
name1 VARCHAR(50),
name2 VARCHAR(50),
origin_date DATE,
var1 VARCHAR(50),
today DATE
);


INSERT INTO new_table (name1, name2, origin_date, var1, today) VALUES
('purple_1', 'purple', '2001-01-01', 'fff', '2020-01-02'),
('pink_1', 'pink', '2002-01-01', 'ggg', '2020-01-02'),
('red_1', 'red', '2010-01-01', 'aaa', '2020-01-02');
7 rows affected
select
coalesce(n.name1,o.name1) name1
, coalesce(n.name2,o.name2) name2
, coalesce(n.origin_date,o.origin_date) origin_date
, coalesce(n.var1,o.var1) var1
, case when n.name1 IS NULL then o.today end end_date
, case when n.name1 IS NULL then 'inactive' else 'active' end end_date
from new_table n
full outer join old_table o on n.name1 = o.name1
order by
coalesce(n.origin_date,o.origin_date) DESC
, coalesce(n.name1,o.name1)

name1 name2 origin_date var1 end_date end_date
red_2 red 2011-01-01 bbb 2020-01-01 inactive
red_1 red 2010-01-01 aaa null active
blue_1 blue 2005-01-01 ccc 2020-01-01 inactive
green_1 green 2005-01-01 ddd 2020-01-01 inactive
pink_1 pink 2002-01-01 ggg null active
purple_1 purple 2001-01-01 fff null active