Here's a slightly different way. Things get easier (and faster) when you separate the data layer from the display layer. You can change it to display any way you want to in the outer Select without having to touch the GROUP BY.
WITH ctePreAgg AS
(--==== Create the totals based on the "Month Serial Number" (This is the "Data Layer"
SELECT MonthSerial# = DATEDIFF(mm,0,Date) --Number of months since 19000101
,Tickets = COUNT(*)
GROUP BY DATEDIFF(mm,0,Date)
)--==== This sorts and displays the data like you want. (This is the "Presentation Layer")
SELECT [Month] = RIGHT(CONVERT(CHAR(11),DATEADD(mm,cte.MonthSerial#,0),106),8)
FROM ctePreAgg cte
ORDER BY MonthSerial# DESC --See how nice it sorts for us regardless of display method?
If the month of the year are NOT in the English Language, post back... there's a pretty easy fix for that.
If you want to display a "0" for months were there were no tickets, we'll need to gen the months and left join to them but that's up to you to let us know.