У меня есть этот набор данных в wrntybank_table:Обновление таблицы с номером строки, используя row_number() с помощью SQL
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, номер остается одинаковым для одной stk_code в том же doc_no и сбросит на stk_code и doc_no. для stk_lineno, номер сбрасывается при разности. stk_code
tq очень подходит для ответа. – user2412351
Я получил вдохновение для подобной проблемы. Большое спасибо за такой ответ! –