sql - 我想在 SQL Server 中以特定组大小划分表中的记录
问题描述
例如,我有一个 TABLE1 有大量记录,ID 是主键
ID | Col1 | COL2 |
---|---|---|
1 | 1 | X |
2 | 2 | 是的 |
3 | 2 | z |
4 | 3 | 一个 |
5 | 4 | b |
6 | 5 | C |
7 | 5 | d |
很快....
现在我有带有额外列计数器的空表 TABLE2
ID | COL1 | COL2 | 柜台 |
---|
我想从 TABLE1 中填充 TABLE2,其中第一个 n 记录的计数器设置为 1,下一个 n 记录设置为 2,依此类推。'n' 在这里是可变的,持有组大小的值
让 n = 2 并且当我们填写 TABLE2 时,然后是预期结果
ID | COL1 | COL2 | 柜台 |
---|---|---|---|
1 | 1 | X | 1 |
2 | 2 | 是的 | 1 |
3 | 2 | z | 2 |
4 | 3 | 一个 | 2 |
5 | 4 | b | 3 |
6 | 5 | C | 3 |
7 | 5 | d | 4 |
解决方案
只需将结果插入到您的新表中:
SELECT *
, ((ROW_NUMBER() OVER (ORDER BY id)-1) / 2) + 1 AS n0
FROM t1
;
推荐阅读
- clojure - 具有最小和最大限制的架构?
- javascript - 检测窗口大小变化
- ios - iOS Popover 阻止呼叫按钮
- git - 法律问题和使用 Git 历史来获取工作量的百分比
- xamarin.forms - System.InvalidOperationException:页面必须没有父级
- r - R Highcharter - X 轴名称在图中变为索引
- python - 从 python 中读取文件时删除空格和逗号
- cors - 跨域(骆驼路线和 angularjs)
- unity3d - 尝试将 Origami(Hololens 101 教程)部署到 Hololens 时出现 CS0012 错误
- java - 连接到远程任务管理器失败。这可能表明远程任务管理器已丢失