我想创建一条更新语句,将一个行中的值添加到具有相同ID字段的另一行的值中。基本上无论TYPE ='ASB'和TEMP ='DELETE'哪里,我都想将AMOUNT值添加到TYPE ='CON'的AMOUNT上。
必须对每个ID进行此操作。 COMBINE字段可以用作每一行的唯一标识符。也许一个Windows功能?非常感谢您的帮助!
Current Result:
ID TYPE AMOUNT COMBINE TEMP
0432 CMP 12828.77 0432CMP
0432 CON -2083.26 0432CON
0432 ASB 1704.03 0430ASB DELETE
Expected Result:
ID TYPE AMOUNT COMBINE TEMP
0432 CMP 12828.77 0432CMP
0432 CON -379.23 0432CON
0432 ASB 1704.03 0432ASB DELETE
update
应该这样做:
update t
set amount = amount +
(select coalesce(sum(t2.amount), 0)
from t t2
where t2.id = t.id and t2.type = 'ASB' and t2.temp = 'DELETE'
)
where t.type = 'CON' and
exists (select 1
from t t2
where t2.id = t.id and t2.type = 'ASB' and t2.temp = 'DELETE'
);
您可以如下使用MERGE
语句:
MERGE INTO YOUR_TABLE TRG USING
(
SELECT ID, TYPE, SUM(AMOUNT) AS AMOUNT
FROM YOUR_TABLE
WHERE TYPE = 'ASB' AND TEMP = 'DELETE'
GROUP BY ID, TYPE
) SRC
ON ( SRC.ID = TRG.ID AND TRG.TYPE = 'CON' )
WHEN MATCHED THEN
UPDATE SET TRG.AMOUNT = TRG.AMOUNT + SRC.AMOUNT;
干杯!