问题描述
输入-
Name,Date,Value
Test1,20200901,55
Test1,100
Test1,150
Test1,20200805,25
Test1,30
行号基于列-名称和日期中的数据
Name,Value,row_number
Test1,55,1
Test1,100,150,25,2
Test1,30,2
使用分区的查询无济于事
select *,row_number() over (partition by Date) as Rank from Table
有人可以帮忙吗
非常感谢您
解决方法
使用dense_rank()
-和order by
子句:
select t.*,dense_rank() over (order by Date) as rn from mytable t
这为您提供了一个序列号,该序列号以1
最早的值递增,date
每次date
更改时都没有间隔。
您想要dense_rank()
:
select *,dense_rank() over (order by Date) as Rank
from Table;
在不使用partition by
的情况下使用order by
时有一些可疑之处(即使基础数据库支持)。