您是否可以在sybase更新中帮助我解决以下问题?
表A
ID COL1 COL1_AMT COL2 COL2_AMT COL3 COL3_AMT COL4 COL4_AMT
1 10 100.00 16 50.00 17 80.00 21 90.00
表B
ID FIN_AMT
1 20
每当COL1或COL2或COL3或COL4的值等于'17'时,应从表A中选择相应的数量列COL1_AMT或COL2_AMT或COL3_AMT或COL4_AMT值,并在表B中更新FIN_AMT clumn
此处COL3为17,因此表B中应添加COL3_AMT值80 FIN_AMT
表B中的预期结果
ID FIN_AMT
1 100 (Already 20 is there, so 80 should be added to this)
提前致谢
答案 0 :(得分:0)
我无法在SYBASE上进行测试,而且已经好几年了,所以请怜悯语法的细节;)
像这样的东西应该这样做;
UPDATE TableB
SET TableB.FIN_AMT = TableB.FIN_AMT +
CASE WHEN TableA.COL1 = 17 THEN TableA.COL1_AMT ELSE 0 END +
CASE WHEN TableA.COL2 = 17 THEN TableA.COL2_AMT ELSE 0 END +
CASE WHEN TableA.COL3 = 17 THEN TableA.COL3_AMT ELSE 0 END +
CASE WHEN TableA.COL4 = 17 THEN TableA.COL4_AMT ELSE 0 END
FROM TableB, TableA
WHERE TableB.ID = TableA.ID