我有一张桌子,如下所示
ID | Version | City | Notes |
---|---|---|---|
101 | 1 | Sweden | 01 |
101 | 1 | Berlin | 20 |
101 | 1 | Tokyo | AAB |
101 | 1 | Delhi | C23 |
101 | 1 | Durban | 34 |
101 | 2 | Berlin | 0 |
101 | 2 | Vatican | AB |
101 | 2 | Mexico | 329 |
预期yields
ID | Version | City | Notes |
---|---|---|---|
101 | 1 | Sweden | 01 |
101 | 1 | Berlin | 20 |
101 | 1 | Durban | 34 |
101 | 1 | Tokyo | 44 |
101 | 1 | Delhi | 54 |
101 | 2 | Berlin | 0 |
101 | 2 | Mexico | 329 |
101 | 2 | Vatican | 330 |
逻辑 每当我找到数字[0-9]以外的值时,我必须获得特定组(ID、版本)中的最大值,并将10递增到其余所有行.如果我们看到第一组(101,1),我有2个字母数字行.所以我必须取max,它是34,对于剩余的每一行都递增10(44和54-其余行的顺序并不重要).
我已经try 了以下代码
select ID,Version,
MAX(case when ISNUMERIC(Notes)=1 then Notes+10 end) OVER (PARTITION BY ID, Version ORDER BY City)
FROM MYTABLE
但是对于其余的所有行,这将返回相同的值(44).我也试了ROW_NUMBER()..+MAX(Case...)
次,但也没有给出预期的结果.请给我带路.