【发布时间】:2017-06-16 10:04:35
【问题描述】:
我的数据如下所示:
| col1 | col2 | denserank | whatiwant |
|------|------|-----------|-----------|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 |
| 3 | 2 | 2 | 2 |
| 4 | 2 | 2 | 2 |
| 5 | 1 | 1 | 3 |
| 6 | 2 | 2 | 4 |
| 7 | 2 | 2 | 4 |
| 8 | 3 | 3 | 5 |
这是我目前的查询:
SELECT col1, col2, DENSE_RANK() OVER (ORDER BY COL2) AS [denserank]
FROM [table1]
ORDER BY [col1] asc
我想要实现的是,每当 col2 的值发生变化时(即使值本身被重用),我的 denserank 列都会递增。我实际上不能按我有 denserank 的列排序,所以这行不通)。有关示例,请参见 whatiwant 列。
有没有什么方法可以通过DENSE_RANK() 实现这一点?或者有其他选择吗?
【问题讨论】:
标签: sql sql-server sql-server-2016 dense-rank