I am using Postgres 9.1 and have two tables (tab1 and tab2). I wish to create a third table (tab3) where each column is the difference between respective columns in these tables, i.e. tab3.col1 = (tab1.col1 - tab2.col1). However my tables tab1 and tab2 have a large number columns. Is there an efficient way to create table tab3?
If I were to hard code my desired output I would plan to use the code below. However I wish to avoid this as I have over 60 columns to create and want to avoid any hard-coding errors. The columns may not be in the same order across the two tables, however the naming is consistent across tables.
CREATE TABLE tab3 AS
  SELECT a.col1_01 - b.col2_01 AS col3_01,
         a.col1_02 - b.col2_02 AS col3_02,
         ...
         ...
   FROM tab1 a FULL JOIN tab2 b USING (permno, datadate);
 
     
    