首页 > 解决方案 > 用于更新 DB2 中数据集间隙的 SQL 查询

问题描述

我的 SQL 更新有以下问题,或者更好地说:我不知道该怎么做。

我必须更新 DB2 上的数据集。我的数据集看起来像。

NUM_CUS      COD_ENTITY      BRN_OPEN        COD_PRODSERV   NUM_ACCOUNT   KEY_ENTITY  KEY_PARTIC PARTSEQ 
11111111           0100       0010              98              60607998     0100         T         01   
20000264           0100       0010              98              60607998     0100         Y         02   

现在必须更新行:NUM_CUS = '20000264',尤其是字段 PARTSEQ。
它必须更新为 PARTSEQ = '01'。

NUM_CUS: '11111111' 和 KEY_PARTIC = 'T' 的行是'主行'!但也可能是我们有 3 行在 PARTSEQ 中有间隙,就像这里

NUM_CUS      COD_ENTITY      BRN_OPEN        COD_PRODSERV   NUM_ACCOUNT   KEY_ENTITY  KEY_PARTIC PARTSEQ 
11111111           0100       0010              98              60607998     0100         T         01   
22222222           0100       0010              98              60607998     0100         Y         03   
20000264           0100       0010              98              60607998     0100         Y         04   

然后 PARTSEQ: 03 应该更新为 01,PARTSEQ: 04 必须更新为 02。

有人可以告诉我如何将字段更新为适当的数字。

标签: sqldb2

解决方案


尝试这个:

UPDATE
(
SELECT PARTSEQ, LPAD(ROW_NUMBER() OVER (ORDER BY PARTSEQ), 2, '0') PARTSEQ_NEW  
FROM MYTAB
WHERE KEY_PARTIC <> 'T'
)
SET PARTSEQ = PARTSEQ_NEW  
WHERE PARTSEQ <> PARTSEQ_NEW;

推荐阅读