SQL Server Rank Function不考虑某些标记值

时间:2018-02-01 03:19:30

标签: sql-server rank

这是我的问题:我有一个标记值列表,我希望看到这些值在没有标记的情况下的位置。但我不希望其他被标记的值影响订单。

注意:标记值是使用CurrentPlace 10000

的值
ID  Value   CurrentPlace
------------------------    
1    2          1 
2    8          3 
3    3          2 
4    4      10000
5    5      10000
6   10      10000 

使用:

select * 
from 
    (select 
         id, value,  
         rank() over (order by Value asc) as Rank
     from
         tbl1) r
where 
    r.ID in (select id from tbl1 where CurrentPlace = 10000)

期望的输出:

ID  Value   Rank 
------------------
4     4       3 
5     5       3
6    10       4

但是我得到了这个:

ID  Value   Rank 
------------------
4      4    3 
5      5    4 
6     10    6 

任何帮助将不胜感激

谢谢你们

我用

解决了
SELECT ID, Value, Rank 
FROM tbl1 a 
CROSS APPLY
    (SELECT isnull(max(currentPlace),0) + 1 AS Rank FROM tbl1 WHERE value < a.value and currentPlace <> 10000) b
WHERE a.CurrentPlace = 10000

请随意发表评论。

0 个答案:

没有答案