Tha*_*Guy 4 sql sql-server rank dense-rank
Dense_Rank正在考虑所有因素.有没有办法排除空值,所以1之后的下一个排名将是2而不是3.
这就是现在的表格:
A | DENSE_R
--------------
1 | 1
--------------
2 | null
--------------
3 | 3
--------------
4 | 4
Run Code Online (Sandbox Code Playgroud)
这就是我希望表格看起来像:
A | DENSE_R
--------------
1 | 1
--------------
2 | null
--------------
3 | 2
--------------
4 | 3
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码: -
WITH CTE AS
(
SELECT A
FROM A1
)
SELECT A,
CASE
WHEN **Condition**
THEN DENSE_RANK() OVER (Order by [A] ASC)
END
AS 'DENSE_R'
FROM CTE
Run Code Online (Sandbox Code Playgroud)
你可以case像这样使用:
select A,
(case when A is not null
then dense_rank() over (partition by (case when A is not null then 1 else 0 end)
order by a desc
)
end) as dr
from A1;
Run Code Online (Sandbox Code Playgroud)
使用partition by与**Condition**您已使用的相同.
WITH CTE AS
(
SELECT A
FROM A1
)
SELECT A,
CASE
WHEN **Condition**
THEN DENSE_RANK() OVER (Partition by (case when **Condition** then 1 else 0 end) Order by [A] ASC)
END
AS 'DENSE_R'
FROM CTE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |