2017-07-19 51 views
1

我有一個表W_PHOTO和DOC_ID爲空,我想更新DOC_ID,按TYPE_ID,但下TYPE_ID做不一樣的是新DOC_ID,例如更新表列spetial排序和分組

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 
+0

你需要什麼基礎來增加doc_id? –

+0

incriment doc_id grup by type_id,但下一個type_id不一樣it new doc_id – Tiko

回答

2

使用lag將當前行的type_id與前一行進行比較,然後使用運行總和將相同的編號分配給具有相同type_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 
+0

我有同樣的想法..我不夠快來制定查詢,雖然:) –