Q&A for professional and enthusiast programmers
WITH closed_and_edited AS ( SELECT c.PostId, MIN(e.CreationDate) AS EditDate FROM PostHistory AS c INNER JOIN PostHistory AS e ON c.PostId = e.PostId AND c.PostHistoryTypeId = 10 -- Post Closed AND e.PostHistoryTypeId = 5 -- Edit Body AND c.CreationDate < e.CreationDate GROUP BY c.PostId ) SELECT q.PostId, oa.PostId FROM closed_and_edited AS q OUTER APPLY ( SELECT PostId FROM PostHistory WHERE PostId = q.PostId AND PostHistoryTypeId = 11 -- Post Reopened AND CreationDate >= q.EditDate ) oa