Borrowing the DDL and data papulation scripts from dwain.c:
SELECT CA.ItemID, CA.Date
FROM @TableA AS CA
LEFT JOIN @TableB AS B ON CA.ItemID = B.ItemID
LEFT JOIN @TableA AS PA ON B.ParentID = PA.ItemID
ORDER BY ISNULL(PA.Date, CA.Date), PA.Date, B.ItemID
Execution plan, as well as the code, is way shorter.
_____________
Code for TallyGenerator