Добавить значения в новый столбец (столбец C) после умножения значений (столбец B) на постоянную - PullRequest
0 голосов
/ 16 апреля 2019

Необходимо сохранить значения столбца 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     |

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Довольно много вариантов.

Один - использовать два последовательных оператора 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
0 голосов
/ 16 апреля 2019

Вы можете обновить эти два столбца следующим обновлением:

UPDATE TableName SET TAX_AMNT = (Charge * 0.5), Total_AMNT = Charge + (Charge * 0.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...