sql - 如何为相同的值获取相同的 rownumber()
问题描述
如果值在列和中重复,我需要获得相同的行号。对于下表:week
desc
星期 | 描述 |
---|---|
1 | ff |
1 | ss |
1 | ss |
2 | ff |
2 | ss |
4 | ff |
4 | ff |
4 | ss |
4 | ss |
预期结果是:
星期 | 描述 | 行数 |
---|---|---|
1 | ff | 1 |
1 | ss | 2 |
1 | ss | 2 |
2 | ff | 1 |
2 | ss | 2 |
4 | ff | 1 |
4 | ff | 1 |
4 | ss | 2 |
4 | ss | 2 |
解决方案
你想要DENSE_RANK
而不是ROW_NUMBER
:
SELECT Week
, [Desc]
, DENSE_RANK() OVER (PARTITION BY Week ORDER BY [Desc]) AS [Rank #]
FROM t
DENSE_RANK
并将RANK
相同的值分配给按列顺序排列的行。DENSE_RANK
此外分配“密集”排名数字而不是“差距”数字。
推荐阅读
- html - 带有背景颜色的表头的 CSS 圆角
- opengl-es-2.0 - 如何组织opengl es 2.0程序?
- python-3.x - 如果没有找到响应,Python Chatterbot 会选择相似的文本
- python - 代码,如果列表中的 3 个数字之和等于 x,则返回 True?
- c# - 如何从对话框结果中打开新表单 | C#
- tabulator - 我有一个制表符表,对齐
- elasticsearch - 多个术语的 Elasticsearch 查询
- c++ - 如何使用GL_TRIANGLE_FAN在OpenGL中画一个圆?
- swift - flatMap 没有被调用
- visual-studio - Visual Studio 2019 没有拾取 CS 生成的文件