题
假设我们有以下数据:
Key Value Desired Rank
--- ----- ------------
P1 0.6 2
P1 0.6 2
P1 0.6 2
P2 0.8 1
P2 0.8 1
P3 0.6 3
P3 0.6 3
我想选择独特的 钥匙 订购 值desc 在支持分页的网格中显示。
我不知道如何在显示的值中生成等级 所需的等级列. 。这样我就可以在数据集上正确划分
当我尝试使用:dense_rank()over(按值订单),结果是
Key Value DENSE_RANK() OVER(ORDER BY value)
--- ----- ------------
P1 0.6 2
P1 0.6 2
P1 0.6 2
P2 0.8 1
P2 0.8 1
P3 0.6 2
P3 0.6 2
当我尝试选择前两个键“排名1和2之间”时,我会收到3个键。这破坏了所需的分页机制。
有任何想法吗?
谢谢
解决方案
如果您想要独特的钥匙和值,为什么不使用不同的键呢?
select distinct
t.Key,
t.Value
from
YourTable t
order by
t.value
您实际需要排名吗?
如果这样做,您仍然可以
select distinct
t.Key,
t.Value,
dense_rank() over () order by (t.Value, t.Key) as Rank
from
YourTable t
order by
t.value
这个人也应该没有明显的工作。
其他提示
'当我尝试选择前两个键“排名1到2之间”时,我会收到3个键。
那是因为您仅按值订购,因此所有具有相同值的键均分配了相同的等级。因此,您需要在订购条款中包含密钥。像这样:
DENSE_RANK() OVER (ORDER BY key ASC, value DESC)
不隶属于 StackOverflow