我正在努力解决以下问题:
colA colDate DenseRank
-------------------------------
a 2015-06-10 1
a 2015-06-09 2
b 2015-06-10 1
b 2015-06-09 2
b 2015-06-08 3
我想得到这个结果
a 2015-06-10 1
b 2015-06-09 2
是否有可能通过查询得到这个或我只能通过t-sql获得这个?我能得到解决方案的例子吗? 提前谢谢你......
答案 0 :(得分:3)
这个怎么样? (应该与SQL Server 2005 +一起使用)
select colA, colDate, DenseRank
from (
select colA, colDate, DenseRank, row_number() over (partition by colA order by DenseRank desc) rn
from YourTable
) x
where x.rn = 2
编辑:已更改为使用row_number()
而非rank()
。
另外,您没有指定,但我假设对于给定的colA
值,您不能有任何重复的DenseRank
值。