create table table1(Date date,A int)
insert into table1 values('01-01-2016', 10)
insert into table1 values('02-01-2016', 12)
create table table2(Date date,B int)
insert into table2 values('01-01-2016', 9)
insert into table2 values('03-01-2016', 5)
create table table3(Date date,C int)
insert into table3 values('01-01-2016', 7)
insert into table3 values('02-01-2016', 8)
insert into table3 values('05-01-2016', 8)
create table table4(Date date,D int)
insert into table4 values('02-01-2016', 5)
insert into table4 values('03-01-2016', 5)
insert into table4 values('04-01-2016', 5)
-- select each available [Date] value from all tables combined
;WITH CTE_Date AS(SELECT [Date] FROM Table1
UNION
SELECT [Date] FROM Table2
UNION
SELECT [Date] FROM Table3
UNION
SELECT [Date] FROM Table4
)
-- outer join the [Date] list with each table
SELECT CTE_Date.[Date], [A], , [C], [D]
FROM CTE_Date
LEFT OUTER JOIN Table1
ON CTE_Date.[Date] = table1.[Date]
LEFT OUTER JOIN Table2
ON CTE_Date.[Date] = table2.[Date]
LEFT OUTER JOIN Table3
ON CTE_Date.[Date] = table3.[Date]
LEFT OUTER JOIN Table4
ON CTE_Date.[Date] = table4.[Date]
drop table table1
drop table table2
drop table table3
drop table table4