Maybe this? SELECT Ticker, funmanager, MAX(table1shares) AS table1shares, MAX(Table2shares) AS Table2shares, MAX(table3shares) AS table3sharesFROM ( SELECT ticker, funmanager, table1shares, NULL AS Table2shares, NULL AS table3shares FROM tabl1 UNION ALL SELECT ticker, funmanager, NULL, Table2shares, NULL , FROM table2 UNION ALL SELECT ticker, funmanager, NULL, NULL, table3shares FROM table3 ) AS TGROUP BY Ticker, funmanager