Q&A for professional mathematicians
; with revisions_cte as ( SELECT DISTINCT p.Id AS pid, ph1.Id AS phId FROM PostHistory ph1 INNER JOIN Posts p ON ph1.PostId=p.Id WHERE ph1.PostHistoryTypeId in (2,5,8) and LOWER(ph1.Text) Like '%##word?haussdorff##%' and NOT(LOWER(p.Body) Like '%##word##%') ), firstrev_cte AS (SELECT pid, MIN(ph2.Id) as MinId FROM revisions_cte INNER JOIN PostHistory ph2 ON ph2.PostId=pid WHERE (ph2.Id>phId) AND ph2.PostHistoryTypeId in (2,5,8) AND NOT(LOWER(ph2.Text) Like '%##word##%') GROUP BY pid ) --- 2 = Initial Body - initial post raw body text --- 5 = Edit Body - modified post body (raw markdown) --- 8 = Rollback Body - reverted body (raw markdown) SELECT PostId AS [Post Link], revisions = 'site://posts/' + CAST(PostId AS varchar)+'/revisions', UserId AS [User Link], UserDisplayName, CreationDate, Comment FROM PostHistory INNER JOIN firstrev_cte ON PostHistory.Id=MinId ORDER BY CreationDate DESC