根据同一表中其他某个列的值查询更新数据

时间:2019-01-24 10:29:21

标签: sql oracle plsql

我有一个表A,其列为

  1. id-这是一个序列
  2. 类型

我想通过遵循以下逻辑来更新列 GROUP 如果type = 1然后将组列更新为常量,请说'10'直到下次找到'1'为止。 如果下次找到'1',则将组更新为'11',依此类推... 请在下面找到示例供参考

示例

enter image description here

任何人都可以帮助查询。

预先感谢

2 个答案:

答案 0 :(得分:0)

您可以使用累积方法:

update a
     set group = ( 
                  with my_cte as (
                       select a.*, 
                              sum(case when type = 1 then 1 else 0 end) over (order by id) as new_group
                       from a;
                    )
                  select new_group from my_cte where a.id = my_cte.id 
);

答案 1 :(得分:0)

您可以使用相关子查询:

update t
    set group = (select count(*) + 9
                 from t t2
                 where t2.id <= t.id and t2.type = 1
                ) ;