如何在值相同时增加值

时间:2017-05-17 06:44:45

标签: sql sql-server sql-server-2008 tsql

我有数据

通过使用此查询,我得到的数据就像这样

Select ID,Val,Premium,Row_number()OVER(PARTITION BY ID,Val ORDER BY ID) RN From Table1

现有数据

  ID    Val   Premium RN
    1   CH     201     1
    1   CH      0      1
    1   CHH    301     2
    1   CHS    401     3

如何使此数据与当前查询

相似
  ID    Val   Premium RN
    1   CH     201     1
    1   CH      0      4
    1   CHH    301     2
    1   CHS    401     3

我只想让同一RN的数据增加到最大数

Val = CH有RN = 1然后我想让Premium = 0记录到RN = 4

在当前行号中,我需要选择MAX(RN)并递增到该重复值

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

UPDATE table1 
SET    rn = (SELECT Max(rn) + 1 
             FROM   table1) 
WHERE  id IN (SELECT id 
              FROM   table1 
              WHERE  rn IN (SELECT rn 
                            FROM   table1 
                            GROUP  BY rn 
                            HAVING Count(*) > 1)) 
       AND premium = 0; 

更新表格。将新RN值设置为最高值+ 1。仅更新存在多个RN值且溢价为0的行。

答案 1 :(得分:0)

Heritrix.java