17,377
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE PAT1 (REGION_CODE VARCHAR2(200),SO VARCHAR2(200))
TRUNCATE TABLE PAT1
INSERT INTO PAT1
SELECT '11010100','5' FROM DUAL
UNION ALL
SELECT '11010101','74' FROM DUAL
UNION ALL
SELECT '11010102','48' FROM DUAL
UNION ALL
SELECT '12010105','6' FROM DUAL
UNION ALL
SELECT '12010106','90' FROM DUAL
UNION ALL
SELECT '12010107','50' FROM DUAL
SELECT * FROM PAT1
/*
REGION_CODE SO
1 11010100 5
2 11010101 74
3 11010102 48
4 12010105 6
5 12010106 90
6 12010107 50
*/
MERGE INTO (SELECT PAT1.* FROM PAT1
WHERE (REGION_CODE,SO) IN
(SELECT REGION_CODE,SO FROM
(SELECT PAT1.*,ROW_NUMBER()OVER(PARTITION BY LPAD(REGION_CODE,6) ORDER BY REGION_CODE DESC ) AS RN FROM PAT1)M1
WHERE M1.RN=1) )T1
USING
( SELECT PAT1.* FROM PAT1
WHERE (REGION_CODE,SO) IN
(SELECT REGION_CODE,SO FROM (SELECT PAT1.*,ROW_NUMBER()OVER(PARTITION BY LPAD(REGION_CODE,6) ORDER BY REGION_CODE ASC ) AS RN FROM PAT1)M1
WHERE M1.RN=1) )T2
ON (LPAD(T1. REGION_CODE,6)= LPAD(T2.REGION_CODE,6))
WHEN MATCHED THEN UPDATE SET T1.SO=T2.SO+T1.SO
SELECT * FROM PAT1
/*
REGION_CODE SO
1 11010100 5
2 11010101 74
3 11010102 53
4 12010105 6
5 12010106 90
6 12010107 56
*/
是这个样子吗?
update t
set so = so + (select so from t where substr(code,-2) = '00')
where substr(code, -2) = '99'