2011-10-10 50 views
2

我在寻找一些帮助,下面的查询:更新增量值到一个SQL列

我有一堆与列的类型,版本行的 - 然而,在某些情况下,版本弄乱,所以我想重写它。

基本上,现在看来这样的:

Type, Version 
A, 0 
A, 0 
A, 1 
A, 2 
B, 1 
B, 3 

我希望它看起来像这样:

Type, Version 
A, 0 
A, 1 
A, 2 
A, 3 
B, 0 
B, 1 

任何帮助将不胜感激, 感谢

+0

怎么办你知道哪个“A,0”记录应该变成“A,1”?如果你有一个可靠的方法来订购这些解决方案将会更容易。 –

+0

任何一个人都会这么做,因为我无法确切地知道哪个A是真正的早期版本。 – Gal

回答

5
WITH T AS 
(
SELECT *, 
     ROW_NUMBER() OVER (PARTITION BY Type ORDER BY Version) - 1 AS V 
FROM YourTable  
) 
UPDATE T 
SET Version = V 
+0

+1 - 当我发布我的评论时,我错过了ROW_NUMBER()末尾的'-1'。 – JNK

+0

@JNK - 那不是那里。我注意到在发布之后的零开始。 –

+0

谢谢,工作很棒!也通过:)了解了分区 – Gal