2013-02-19 60 views
0

我有一个SQL表看起来像:更新COLB由1至可乐改变

ColA ColB 
xyz  0 
xyz  0 
xyz  0 
uvw  0 
uvw  0 
stu  0 

,我想必须更新为:

ColA ColB 
xyz  1 
xyz  2 
xyz  3 
uvw  1 
uvw  2 
stu  1 

我想我需要一个游标嵌套while子句,但我是所有这些新手。任何帮助将不胜感激。 谢谢 迪克

+0

更新是否仅在_continuous_'ColA'值上发生?换句话说,如果在'stu'之后出现另一个'xyz',它的'ColB'值变为'4'还是从'1'开始? – 2013-02-19 23:46:41

回答

2

您可以使用ROW_NUMBERPARTITION BY子句。

SELECT 
    ColA, 
    ROW_NUMBER() OVER(PARTITION BY ColA ORDER BY ColA DESC) AS ColB 
FROM MyTable 

请注意,这将以任意顺序标记列。如果你有一个ID列,你可以改为ORDER BY