I would use JOINs to connect these.

You would want to decide which values you want (see above chart for a great visualization of SQL Join results) to keep, and that will determine your type of join.
For instance, if you want to return all results from matching values in the tables, you would use:
SELECT a.FieldA, a.FieldB, b.FieldC, c.FieldD
FROM [DE1] a
INNER JOIN [DE2] b ON a.FieldA = b.FieldB
INNER JOIN [DE3] c ON a.FieldA = c.FieldA
Via the inner Join, you would be able to collect only those with matching FieldA on DE1 to DE2 and DE3.
There are many other options and different types of joins to meet your needs. If you provide more specifics on exactly what you are looking for, I can better specify my example code to fit your needs.
EDIT
This should solve your needs:
SELECT a.FieldA
, a.FieldB
, CASE
WHEN ISNULL(a.FieldC,'') <> '' THEN
a.FieldC
WHEN ISNULL(b.FieldC,'') <> '' THEN
b.FieldC
WHEN ISNULL(c.FieldC,'') <> '' THEN
c.FieldC
ELSE
''
END as FieldC
, CASE
WHEN ISNULL(a.FieldD,'') <> '' THEN
a.FieldD
WHEN ISNULL(b.FieldD,'') <> '' THEN
b.FieldD
WHEN ISNULL(c.FieldD,'') <> '' THEN
c.FieldD
ELSE
''
END as FieldD
, CASE
WHEN ISNULL(a.FieldE,'') <> '' THEN
a.FieldE
WHEN ISNULL(b.FieldE,'') <> '' THEN
b.FieldE
WHEN ISNULL(c.FieldE,'') <> '' THEN
c.FieldE
ELSE
''
END as FieldE
, CASE
WHEN ISNULL(a.FieldF,'') <> '' THEN
a.FieldF
WHEN ISNULL(b.FieldF,'') <> '' THEN
b.FieldF
WHEN ISNULL(c.FieldF,'') <> '' THEN
c.FieldF
ELSE
''
END as FieldF
FROM [DE1] a
FULL JOIN [DE2] b ON a.FieldA = b.FieldA AND a.FieldB = b.FieldB
FULL JOIN [DE3] c ON a.FieldA = c.FieldA AND a.FieldB = c.FieldB
It cascades the Field C-F values trying to fill it in first in DE1, then DE2 then DE3 - depending on if a value exists there or not.