【发布时间】:2020-08-12 14:30:44
【问题描述】:
我有以下数据:
with cte (id,[months]) as (
select 1, 'July 2019' union all
select 2, 'July 2019' union all
select 3, 'July 2019' union all
select 4, 'July 2019' union all
select 5, 'August 2019' union all
select 6, 'August 2019' union all
select 7, 'September 2019' union all
select 8, 'October 2019' union all
select 9, 'November 2019' union all
select 10, 'December 2019' union all
select 11, 'January 2020' union all
select 12, 'January 2020' union all
select 13, 'January 2020' union all
select 14, 'January 2020' union all
select 15, 'February 2020' union all
select 16, 'March 2020' union all
select 17, 'March 2020' union all
select 18, 'April 2020' union all
select 19, 'May 2020' union all
select 20, 'June 2020'
)
我需要创建一个排序列,以相同的数字对所有相同的months 进行排名。
我遇到以下代码的问题是,它没有正确排序,也没有为我提供预期的结果:
select
*
, dense_rank() over (partition by months order by id) Sort
from cte
当前结果:
我的预期结果:
我应该如何更改我的脚本来实现这一点?
【问题讨论】:
-
如果你有任何影响数据模型的能力,你应该建议改变它。这是存储任何人都希望用作日期的任何日期相关数据的可怕方式。
-
感谢@EricBrandt。
标签: tsql sql-server-2017