You only want one Lastdate per person, so use "GROUP BY PhoneNumber" and "MAX([DateRecd])" in your second select.
Code:
SELECT
SortingAndGrouping.LastDate,
SortingAndGrouping.PhoneNumber,
tblPledgesLead.DateRecd
FROM
(tblContributorsLead INNER JOIN tblPledgesLead
ON tblContributorsLead.PhoneNumber = tblPledgesLead.PhoneNumber)
INNER JOIN
(SELECT
CDate(Format(Nz(Max([DateRecd]),#1/1/9999#),"MM/DD/YYYY")) AS LastDate,
tblPledgesLead.PhoneNumber
FROM
tblContributorsLead INNER JOIN tblPledgesLead
ON tblContributorsLead.PhoneNumber=tblPledgesLead.PhoneNumber
GROUP BY
tblPledgesLead.PhoneNumber) AS SortingAndGrouping
ON tblContributorsLead.PhoneNumber = SortingAndGrouping.PhoneNumber
ORDER BY
SortingAndGrouping.LastDate DESC ,
SortingAndGrouping.PhoneNumber,
tblPledgesLead.DateRecd DESC;
I generally prefer to use shorter aliases, rather than longer ones, and to alias each table that appears twice in two different ways, to avoid confusion.
That would look like this:
Code:
SELECT
TS.LastDate,
TS.PhoneNumber,
TP.DateRecd
FROM
(tblContributorsLead AS TC INNER JOIN tblPledgesLead AS TP
ON TC.PhoneNumber = TP.PhoneNumber)
INNER JOIN
(SELECT
CDate(Format(Nz(Max([DateRecd]),#1/1/9999#),"MM/DD/YYYY")) AS LastDate,
TP2.PhoneNumber
FROM
tblContributorsLead AS TC2 INNER JOIN tblPledgesLead AS TP2
ON TC2.PhoneNumber=TP2.PhoneNumber
GROUP BY TP2.PhoneNumber) AS TS
ON TC.PhoneNumber = TS.PhoneNumber
ORDER BY
TS.LastDate DESC ,
TS.PhoneNumber,
TP.DateRecd DESC;
That change allowed me to notice that the tables aliased as TC and TC2 don't appear to be doing anything in this query.
Eliminating them resulted in this simpler query:
Code:
SELECT
TP2.LastDate,
TP.PhoneNumber,
TP.DateRecd
FROM
tblPledgesLead AS TP
INNER JOIN
(SELECT
CDate(Format(Nz(Max([DateRecd]),#1/1/9999#),"MM/DD/YYYY")) AS LastDate,
TP2.PhoneNumber
FROM
tblPledgesLead AS TP2
GROUP BY TP2.PhoneNumber)
ON TP.PhoneNumber = TP2.PhoneNumber
ORDER BY
TP2.LastDate DESC ,
TP2.PhoneNumber,
TP.DateRecd DESC;