使用“位于组中的位置”列将值插入新表中?

时间:2012-03-08 04:46:58

标签: sql

我有一张桌子:

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并继续递增。

第二个表已创建且为空 我需要将旧表的列c1c2的值复制到新表中,同时将新值插入第二个表的c3

2 个答案:

答案 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