在sql中命名分组集

Naming grouped sets in tsql

是否可以将组名添加到 T-SQL

中的分组集中
Select Class, Category, Gender,Count(1) as Total, 'GroupNameHere' from PersonTable
Group By Class, Category, Gender

我希望每个分组集都被赋予一个新名称,如下所述

实际Table

Name     |    Class   |   Category   |   Gender   |   Address   |   ZipCode
----------------------------------------------------------------------------
ABC      |      2     |     Cat 1    |     M      |  Some Add.. |   10125
XYZ      |      2     |     Cat 1    |     M      |  Some Add.. |   20554
AFF      |      3     |     Cat 3    |     M      |  Some Add.. |   24525
ASD      |      7     |     Cat 6    |     F      |  Some Add.. |   18892
GDS      |      7     |     Cat 6    |     F      |  Some Add.. |   17745

输出

Class |   Category   |   Gender   |   Total   |   GroupName
----------------------------------------------------------------------------
2     |     Cat 1    |     M      |     2     |   Group 1
3     |     Cat 3    |     M      |     1     |   Group 2
7     |     Cat 6    |     F      |     2     |   Group 3

通过参考 this. I can use NewId() 生成基于 GUID 的行 ID 得到了解决方案。

Select Class, Category, Gender,Count(1) as Total, 
'Group' + Convert(varchar(100),(ABS(CHECKSUM(NewId())))) as GroupName from PersonTable
Group By Class, Category, Gender
Select Class, Category, Gender,Count(1) as Total,  'Group ' +CAST (Row_Number() over ( order by Class, Category, Gender) as varchar(10) )as GroupName 
from PersonTable 
Group By Class, Category, Gender