Okay, here's the DELETE as a CTE, which is probably the easiest way to do it... (once you read the crib notes)
; WITH CTE_DupeAddr(DupeID, ID, Cid, FName, LName, DOB, City) AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY FName, LName, DOB, City ORDER BY FName, LName) AS DupeID
, ID
, [SID]
, FName
, LName
, DOB
, City
FROM #TableA
)
/*
-- show what will be deleted
SELECT * FROM CTE_DupeAddr
WHERE DupeID>1;
*/
DELETE
FROM CTE_DupeAddr
WHERE DupeID>1;
(Gotta love Rick Morelan's simple examples!)
comment out the SELECT/DELETE statement, depending on which you want to run. The Select will show which records will be deleted. The other will just delete them.