我有一张桌子:
c1 c2 c3
----------
100 200
100 201
100 203
200 405
200 408
...和另外一个用3列创建的表。
我需要将上表中的值添加到新表中,包括一个新列,如
c1 c2 c3
--------------
100 200 1
100 201 2
100 203 3
200 405 1
200 408 2
......等等。 c3
取决于c1
,当c1
更改时,将其设置为1并继续递增。
第二个表已创建且为空
我需要将旧表的列c1
和c2
的值复制到新表中,同时将新值插入第二个表的c3
。
答案 0 :(得分:3)
insert into my_table2
select c1, c2
,row_number() over (partition by c1 order by c1, c2)
from my_table
答案 1 :(得分:2)
这应该是你需要的:
示例架构
CREATE TABLE test ( c1 INT NOT NULL, c2 INT NOT NULL ); INSERT INTO TEST VALUES (100, 200), (100, 201), (100, 203), (200, 405), (200, 408)
<强>查询强>
SELECT T1.C1, T1.C2, COUNT(*) AS C3 FROM test T1 JOIN test T2 ON T1.C1 = T2.C1 AND T1.C2 >= T2.C2 GROUP BY T1.C1, T1.C2