SQL指定分区排名问题:如何让同Round的行获相同序号
解决同Round分组生成相同rotasi序号的问题
你当前使用ROW_NUMBER()函数无法实现需求,因为该函数会为分区内的每一行生成唯一递增的序号——即使Round值相同,只要行的其他字段(比如Platform)不同,序号就会依次递增。
要让相同Round的行拥有相同的rotasi值,应该使用DENSE_RANK()函数,它会为分区内相同排序键的行分配相同的序号,且序号是连续无空缺的。
修改后的查询语句
SELECT *, DENSE_RANK() OVER ( PARTITION BY YEAR(Date), MONTH(Date), [CC Receiver], Name, Division, [Old Block] ORDER BY Round ) AS rotasi FROM CTE1; -- 注:你的建表语句是CTE1,原插入/查询语句写为CTE,需修正表名一致
结果说明
执行上述语句后,分区内所有Round为45的行rotasi都会是1,Round为46的行rotasi都会是2,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Fachry Dzaky
相关产品推荐
相关产品推荐

