我在 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