这是我的问题:我有一个标记值列表,我希望看到这些值在没有标记的情况下的位置。但我不希望其他被标记的值影响订单。
注意:标记值是使用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
请随意发表评论。