0

你们中的任何人都可以帮我解决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 FIN_AMT 中添加 COL3_AMT 值 80

表 B 中的预期结果

ID   FIN_AMT
 1       100      (Already 20 is there, so 80 should be added to this)

提前致谢

4

1 回答 1

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
于 2013-06-12T13:59:43.607 回答