与某个常数相乘后,需要将 CHARGE 列的值保存在 TAX_AMNT 中。
| Charge | TAX_AMNT | Total_AMNT|
| 50 | null | null |
| 80 | null | null |
| 90 | null | null |
| 10 | null | null |
让我们说,我需要将负责人的值乘以恒定值 0.5 ,然后将值保存在tax_amnt中,最后让total_amnt负责+计算出的tax_amnt。
决赛桌看起来像这样。
| Charge | TAX_AMNT | Total_AMNT|
| 50 | 25 | 75 |
| 80 | 40 | 120 |
| 90 | 45 | 135 |
| 10 | 05 | 15 |
答案 0 :(得分:1)
很多选择。
一种是使用两个连续的UPDATE
语句:
update test set
tax_amnt = charge * 0.5;
update test set
total_amnt = charge + tax_amnt;
另一种方法是在一个UPDATE
中完成:
update test set
tax_amnt = charge * 0.5,
total_amnt = (charge * 0.5) + charge;
或者,您甚至可以使用MERGE
:
merge into test t
using (select t1.charge * 0.5 tax_amnt,
t1.charge
from test t1
) x
on (t.charge = x.charge)
when matched then update set
t.tax_amnt = x.tax_amnt,
t.total_amnt = x.charge + x.tax_amnt;
尽管可以(显然)可以做到,但请考虑不完全存储TOTAL_AMNT
(即删除列)。尽管将总结果显示在一个表中是 nice ,但它要求您始终保持其值。如果您更新TAX_AMNT
怎么办?您是否还记得必须重新计算TOTAL_AMNT
? CHARGE
和TOTAL_AMNT
的值可能涉及的任何其他列也是如此。
只需在需要时查询并显示该值即可,例如
select tax_amnt,
charge,
tax_amnt + charge as total_amnt
from test
答案 1 :(得分:0)
您可以通过以下UPDATE更新这两列:
UPDATE TableName SET TAX_AMNT = (Charge * 0.5), Total_AMNT = Charge + (Charge * 0.5)