Sql 更新表列特殊顺序和分组
我有一张带有照片的表格,文档id为空,我想更新文档id,按类型id分组,但下一个类型id与新文档id不同,例如Sql 更新表列特殊顺序和分组,sql,oracle,plsql,Sql,Oracle,Plsql,我有一张带有照片的表格,文档id为空,我想更新文档id,按类型id分组,但下一个类型id与新文档id不同,例如 id case type_id pnum doc_id 1000001 1000001 2101 20 1 1000002 1000001 2101 40 1 1000003 1000001 2101 60 1 1000004
id case type_id pnum doc_id
1000001 1000001 2101 20 1
1000002 1000001 2101 40 1
1000003 1000001 2101 60 1
1000004 1000001 106 70 2
1000005 1000001 106 80 2
1000006 1000001 1199 100 3
1000007 1000001 1103 120 4
1000008 1000001 7 140 5
1000009 1000001 106 160 6
1000010 1000001 2103 180 7
1000011 1000001 2105 200 8
1000012 1000001 2106 220 9
1000013 1000001 2104 240 10
1000014 1000001 2202 260 11
1000015 1000001 1104 280 12
1000016 1000001 103 310 13
1000017 1000001 103 320 13
1000018 1000001 103 340 13
1000019 1000001 1199 380 14
1000020 1000001 2104 400 15
1000021 1000001 2104 420 15
1000022 1000001 2104 440 15
1000023 1000001 2104 460 15
使用
lag
将当前行的type\u id与前一行进行比较,然后使用running sum将相同的数字分配给具有相同type\u id值的连续行
select t.*,sum(col) over(order by id) as doc_id
from (select t.*,
case when type_id=lag(type_id) over(order by id) then 0 else 1 end as col
from t
) t
你需要在什么基础上增加doc_id?incrimint doc_id grup by type_id,但是下一个type_id不相同,它是新doc_id,我有相同的想法..我没有足够的速度来制定查询:)