例如,我有一個包含大量記錄的 TABLE1,ID 是主鍵
| ID | 第 1 列 | COL2 |
|---|---|---|
| 1 | 1 | X |
| 2 | 2 | 是 |
| 3 | 2 | z |
| 4 | 3 | 一種 |
| 5 | 4 | 乙 |
| 6 | 5 | C |
| 7 | 5 | d |
很快....
現在我有一個帶有附加列計數器的空表 TABLE2
| ID | COL1 | COL2 | 柜臺 |
|---|
我想從 TABLE1 填充 TABLE2,計數器設定為 1 表示前 n 條記錄,2 表示接下來的 n 條記錄,依此類推。'n' 在這里是變數,保存組大小的值
讓 n = 2,當我們填充 TABLE2 時,預期結果
| ID | COL1 | COL2 | 柜臺 |
|---|---|---|---|
| 1 | 1 | X | 1 |
| 2 | 2 | 是 | 1 |
| 3 | 2 | z | 2 |
| 4 | 3 | 一種 | 2 |
| 5 | 4 | 乙 | 3 |
| 6 | 5 | C | 3 |
| 7 | 5 | d | 4 |
uj5u.com熱心網友回復:
只需將這個結果插入到你的新表中:
SELECT *
, ((ROW_NUMBER() OVER (ORDER BY id)-1) / 2) 1 AS n0
FROM t1
;
uj5u.com熱心網友回復:
INSERT INTO TABLE2(ID,COL1,COL2,counter)
SELECT ID,COL1,COL2,
((ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1) / n 1)
FROM TABLE1
uj5u.com熱心網友回復:
嘗試這個:
DECLARE @Table1 TABLE (ID int, Col1 int, COL2 char(1))
DECLARE @Table2 TABLE (ID int, Col1 int, COL2 char(1), [Counter] int)
;
DECLARE @N int = 2;
INSERT INTO @Table1
VALUES
(1, 1, 'x')
, (2, 2, 'y')
, (3, 2, 'z')
, (4, 3, 'a')
, (5, 4, 'b')
, (6, 5, 'c')
, (7, 5, 'd')
;
INSERT INTO @Table2
SELECT
ID
, Col1
, Col2
, [Counter] = ((ID-1) / @N) 1
FROM @Table1
;
SELECT * FROM @Table2;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361959.html
標籤:sql sql-server 查询语句
上一篇:(TABLOCKX)和(TABLOCKX,HOLDLOCK)的區別
下一篇:僅從行集中取第一行
