Hay una solución muy simple usando dense_rank()
dense_rank() over (partition by [Mth] order by [UserAccountKey])
+ dense_rank() over (partition by [Mth] order by [UserAccountKey] desc)
- 1
Esto le dará exactamente lo que estaba pidiendo:la cantidad de UserAccountKeys distintas dentro de cada mes.