Иногда я считаю полезной конструкцию:
select sum(c1) Header1, sum(c2) Header2, sum(c3) Header3
from (
select field c1, 0 c2, 0 c3
from table1
) t1,
(
select 0, field, 0
from table2
) t2
(
select 0,0,field
from table3
) t3
[where clause and joins between t1,t2 and t3]
В примере я принял числовые значения и использовал сумму. Тот же подход можно использовать со строками, например, заменив 0 на NULL и SUM на MAX.