在SQL中使用RANK()OVER将rank设置为NULL

sql Server数据库中,我有一个我对排名感兴趣的值表.

当我执行RANK()OVER(ORDER BY VALUE DESC)作为RANK时,我得到以下结果(在假设的表中):

RANK | USER_ID   | VALUE
------------------------
1   | 33        | 30000
2   | 10        | 20000
3   | 45        | 10000
4   | 12        | 5000
5   | 43        | 2000
6   | 32        | NULL
6   | 13        | NULL
6   | 19        | NULL
6   | 28        | NULL

问题是,我不希望VALUE为NULL的行获得排名 – 我需要某种方法将这些排名设置为NULL.到目前为止,搜索网络并没有给我带来任何关于我如何能够做到这一点的答案.

感谢您的任何帮助,您可以提供.

解决方法

您可以尝试CASE语句:
SELECT
    CASE WHEN Value IS NULL THEN NULL
         ELSE RANK() OVER (ORDER BY VALUE DESC)
    END AS RANK,USER_ID,VALUE
FROM yourtable

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03