根据另一个列值创建行号列

问题描述

我有以下数据:

enter image description here

这是一个有日期和年/周数的日历,周是我们的内部日历。我想要做的是按最近的周数排序,然后将其设为 rel_week_index=1,然后将前一周设为 rel_week_index=2,等等。我通过执行 ROW_NUMBER() OVER(PARTITION BY YEAR ORDER BY YEAR DESC) 来实现这一点,但是,一旦您到上一年,此 rel_week_index 列从 1 开始,这不是我想要的。

理想情况下,year_week=202111 将是 rel_week_index=1year_week=202110 将是 rel_week_index=2,依此类推。

解决方法

如果我理解正确的话,这是根据年和周组合按降序计算行号的查询:

ROW_NUMBER() OVER( ORDER BY YEAR_week DESC)