Actually, I managed to kill two birds with one stone by using a QueryRepeater with a query of:
SELECT
MONTH(NewsReleaseDate) AS 'Month',
YEAR(NewsReleaseDate) AS 'Year',
COUNT(*) AS 'Count'
FROM
CONTENT_News
INNER JOIN
View_CMS_Tree_Joined
ON
View_CMS_Tree_Joined.DocumentForeignKeyValue = CONTENT_News.NewsID
WHERE
View_CMS_Tree_Joined.SiteName = 'MySite'
AND
View_CMS_Tree_Joined.Published = 1
GROUP BY
YEAR(NewsReleaseDate), MONTH(NewsReleaseDate)
ORDER BY
YEAR(NewsReleaseDate) DESC, MONTH(NewsReleaseDate) DESC
And a transformation like:
<a href="?range=<%# Eval("Month", true) %><%# Eval("Year", true) %>">
<%# System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName((int)Eval("Month")) %>
<%# Eval("Year", true) %>(<%# Eval("Count", true) %>)
</a>
Thanks for the assist though, and if you have any suggestions on improving this happy to listen!