Assuming Microsoft SQL Server:
WITH SortedRecords As
(
SELECT
[Person Number],
[Effective Date],
[Address Block],
ROW_NUMBER() OVER (PARTITION BY [Person Number] ORDER BY [Effective Date] DESC) As RN
FROM
[Person].[Details]
)
SELECT
[Person Number],
[Effective Date],
[Address Block],
FROM
SortedRecords
WHERE
RN = 1
ORDER BY
[Person Number] DESC
;
NB: If you can, I'd recommend renaming your columns so that they don't contain spaces. As you can see, when the column name contains "special" characters, you have to wrap it in square brackets.
Database Identifiers - SQL Server | Microsoft Docs[
^]