sql-server - 如何在 SQL 中压缩数字列表
问题描述
我有一张桌子,有一int
列。这些数字都是唯一的,但并非都存在于从最小 (1) 到最大的范围内。我想“压缩”数字列表,以便列表中的最大数字是列表中COUNT
的数字,并且记录保持相同的相对顺序(将其视为身份列,但实际上是't)。所以例如,如果我有数字
1 3 5 6 10 11 14 15 20 30
我希望他们重新编号
1 2 3 4 5 6 7 8 9 10
3 变成了 2,5 变成了 3,等等。我怎样才能在 T-SQL 中做到这一点?
解决方案
我猜你只需要 row_number()
SELECT row_number()
over
(partition by column order by column
asc) rn from table;
推荐阅读
- tla+ - \in 有效,而 \subseteq 给出“标识符未定义”错误
- python - 生成器可以等待产生直到另一个函数被触发吗?
- html - 使 Div 适合蒙版大小
- python - 使用 Pandas 计算 NPS
- swift - 使用适用于 iPhone7 及更高版本的最新 Swift 设置自定义 Haptic
- java - 在 Apache Commons Net 中为 FTP 协议启用日志记录
- windows - UWP:如果调整窗口大小,“webview”内容会被切断
- javascript - 使用 Guards (Roles, JWT) 获取用户数据
- javascript - document.execCommand('SaveAs',null,'filename.csv') 在 Chrome 上不起作用
- java - 在 Java 中对集合进行排序