>Did you try having an index on the group by expression?
>
>Also, you do really need to convert to char? why not grouping by YEAR(Invoice.ModDate) directly? (and having an index on it too might help)
In SQL Server you can not create an index on expression. Only if it's a computed column.
If it's not broken, fix it until it is.
My Blog