答案 0 :(得分:1)
分析函数Dense_Rank()在这里可以正常工作。
SELECT col1 , col2 , col3
, DENSE_Rank() OVER (ORDER BY COL1, COL2, COL3) AS MYGROUP
FROM REFTABLE
Rank()vs Dense_rank()密集排名将保持数字顺序没有差距,而排名将引入差距。在您的示例3中,B,Y两次可以被分配等级3,但如果使用等级4,则使用等级为下一个值将被分配等级为4(
链接到Docs
注意每次查询运行时都会分配Dense_rank,这样#可以随着数据的变化而变化。如果您希望数字是唯一的,那么您需要存储它们。然后强制Dense_Rank从存储结果中最高#的种子开始。
答案 1 :(得分:0)
添加rownum将每行添加序列号:
select col1, col2, col3, rownum as mygroup from table a;