在 SQL 中使用分区子句时为序列分配 ID

Assigning an ID to a sequence when using partition clauses in SQL

当尝试使用 partition by 子句识别特定序列时,可以用 row_number.

标记分区中的每一行
select *, 
       row_number() over(partition by x,y order by z desc) as rn,
from table ;

您将如何为每个分区分配特定的 ID(例如哈希)?

您可以使用 dense_rank():

枚举分区
select t.*,
       row_number() over (partition by x, y order by z desc) as with_partition_seqnum,
       dense_rank() over (order by x, y) as partition_seqnum
from t;

生成 has 的一种方法是 HASH_BYTES 函数:

SELECT *, HASHBYTES('SHA2_256', CONCAT(x, '^', y)) AS hash FROM t;  

db<>fiddle demo