• 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

    ** Don't mistake the ‘stupidity of the crowd’ for the ‘wisdom of the group’! **