如何使用Teradata中的行号更新列的值

时间:2014-04-18 06:37:02

标签: sql teradata

我想以这种方式更新列的值

new value  = old value + row_number() * 1000

也适用于row_number我想按旧值使用顺序

但我找不到任何解决方案。

示例数据

column    
   1
   3
   5
更新查询后

应该是

column
  1001
  2003
  3005

1 个答案:

答案 0 :(得分:3)

CREATE VOLATILE TABLE test, NO FALLBACK
(MyCol SMALLINT NOT NULL)
PRIMARY INDEX (MyCol)
ON COMMIT PRESERVE ROWS;

INSERT INTO test VALUES (1);
INSERT INTO test VALUES (3);
INSERT INTO test VALUES (5);

SELECT MyCol FROM test;

UPDATE test
  FROM (SELECT MyCol
             , ROW_NUMBER() OVER (ORDER BY MyCol) AS RowNum_
          FROM test) DT1
   SET MyCol = test.MyCol + (RowNum * 1000)
 WHERE test.MyCol DT1.MyCol;

SELECT MyCol FROM TEST;