形成对日期字段进行排序和分类的Tsql查询
我有一套:形成对日期字段进行排序和分类的Tsql查询,tsql,date,sql-server-2008-r2,Tsql,Date,Sql Server 2008 R2,我有一套: create table #date_example ( date_val datetime, rownum int ) insert #date_example values('3/1/14',1) insert #date_example values('3/1/14',2) insert #date_example values('3/1/14',3) insert #date_example values('2/1/14',4) insert #date_example v
create table #date_example
(
date_val datetime, rownum int
)
insert #date_example values('3/1/14',1)
insert #date_example values('3/1/14',2)
insert #date_example values('3/1/14',3)
insert #date_example values('2/1/14',4)
insert #date_example values('1/3/14',5)
select --top 1 with ties
date_val,
ROW_NUMBER() OVER(PARTITION BY rownum ORDER BY date_val DESC) AS 'RowNum'
from #date_example
order by date_val
desc
输出:
date_val RowNum
2014-03-01 00:00:00.000 1
2014-03-01 00:00:00.000 1
2014-03-01 00:00:00.000 1
2014-02-01 00:00:00.000 1
2014-01-03 00:00:00.000 1
但我想要的是输出:
date_val RowNum
2014-03-01 00:00:00.000 1
2014-03-01 00:00:00.000 1
2014-03-01 00:00:00.000 1
2014-02-01 00:00:00.000 2
2014-01-03 00:00:00.000 3
所以我希望RowNum是一个包含平局的排名。我怎样才能做到这一点呢?我从另一篇帖子中找到了答案:
select
date_val,
Rank() OVER(ORDER BY date_val DESC) AS 'RowNum'
from #date_example
您是否尝试过RANK()或DENSE_RANK()?数据集中按rownum划分的分区rownum是唯一的。使用rownum和rownum确实令人困惑——tsql不区分大小写。有趣的是,你没看到吗?