wrntybank_table に次のデータ セットがあります。
doc_no doc_lineno stk_code stk_lineno serial_no warranty_no
doc1 NULL ABC NULL ABC1 WRN1
doc1 NULL ABC NULL ABC5 WRN5
doc1 NULL DEF NULL ABC2 WRN2
doc2 NULL ABC NULL ABC3 WRN3
doc4 NULL HJI NULL ABC4 WRN4
doc4 NULL HJI NULL ABC6 WRN6
このテーブルを更新し、doc_lineno & stk_lineno 列を次のように数値で埋めたいと思います。
doc_no doc_lineno stk_code stk_lineno serial_no warranty_no
doc1 1 ABC 1 ABC1 WRN1
doc1 1 ABC 2 ABC5 WRN5
doc1 2 DEF 1 ABC2 WRN2
doc2 1 ABC 1 ABC3 WRN3
doc4 1 HJI 1 ABC4 WRN4
doc4 1 HJI 2 ABC6 WRN6
両方の列にこのコードを使用して作成する方法。
with toupdate as (
select Document,
10 * row_number() over (partition by Document order by (select NULL)) as val
from t
)
update toupdate
set line_num = val;
注: doc_lineno の場合、同じ doc_no 内の同じ stk_code の番号は同じままで、stk_code と doc_no でリセットされます。stk_lineno の場合、数値は diff 時にリセットされます。stk_code