如何解决按分区准确排序日期名称
我有以下数据:
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
当前结果:
我的预期结果:
我应该如何更改脚本以实现此目的?
解决方法
经过大量的努力,我设法使用以下脚本解决了这个问题:
select
*,convert(date,'01 '+Months) MonthsConvertedToDate,dense_rank() over (order by convert(date,'01 '+Months)) Sort
from cte
order by sort,id
结果:
参见演示here
但是我愿意提出更好的建议:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。