你们谁能帮我解决一下sybase更新中的以下情况?
表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等于value为'17'时,应该从表A中选择相应的金额列COL1_AMT或COL2_AMT或COL3_AMT或COL4_AMT的值,并在表B中更新FIN_AMT列
这里COL3是17,所以COL3_AMT的值80应该添加到表B FIN_AMT
表B的预期结果
ID FIN_AMT
1 100 (Already 20 is there, so 80 should be added to this)
Thanks in advance
我不能在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