基于顺序列的Sybase更新



你们谁能帮我解决一下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

相关内容

  • 没有找到相关文章

最新更新