加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:34:58 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server数据库中,我有一个我对排名感兴趣的值表. 当我执行RANK()OVER(ORDER BY VALUE DESC)作为RANK时,我得到以下结果(在假设的表中): RANK | USER_ID | VALUE------------------------1 | 33 | 300002 | 10 | 200003 | 45 | 100004 | 12 | 50005 | 43
在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读