嗨,我有一个数据表,我想根据排序的日期顺序从第一组名称开始输出名称的 dense_rank。例如
DROP TABLE MyTable
SELECT * INTO MyTable FROM (
VALUES ('2015-12-23', 'ccc'),('2015-12-21', 'aaa'),
('2015-12-20', 'bbb'),('2015-12-22', 'aaa')
) t (date, name)
SELECT DENSE_RANK() OVER (ORDER BY name) rank, * FROM MyTable ORDER BY date
对于上面的查询,我得到了
rank date name
2 2015-12-20 bbb
1 2015-12-21 aaa
1 2015-12-22 aaa
3 2015-12-23 ccc
您可以看到日期已排序(好),等级分配给组中的名称(好),但等级不是从第一组名称开始,例如我想要
rank date name
1 2015-12-20 bbb
2 2015-12-21 aaa
2 2015-12-22 aaa
3 2015-12-23 ccc
您将如何更正查询?如果有多个工作答案,将选择最简单/最短的一个作为答案。谢谢。
添加:
感谢@lad2025 和@GiorgosBetsos 澄清我的问题。排序是直接根据日期和日期在我的情况下是独一无二的。名称可以不连续地重复和出现。因此('2015-12-24', 'aaa')
,输出为
rank date name
1 2015-12-20 bbb
2 2015-12-21 aaa
2 2015-12-22 aaa
3 2015-12-23 ccc
4 2015-12-24 aaa