ADD COLUMN с принудительным типом DECIMAL для вычисляемого столбца - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь изменить a, чтобы добавить новый вычисляемый столбец, но окончательный результат является десятичным без ... decimal (???)

Я придумал

ALTER TABLE
  dbo.transaction_payment
ADD
  total_amount AS CAST(
    (CAST(amount_transac AS decimal(12, 2))) + (CAST(amount_tip AS decimal(12, 2))) AS decimal(12, 2)
  )

Но двигатель говорит мне, что я получил ошибку.Я приводил каждое значение, чтобы оно не имело неявного типа, и терял точность, и я приводил окончательный результат.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы не можете "изменить" вычисляемый столбец, поэтому:

ALTER TABLE dbo.transaction_payment
    ADD total_amount as (CONVERT(decimal(12, 2), amount_transac + amount_tip));

Если он уже существует, сначала отбросьте его:

ALTER TABLE dbo.transaction_payment
    DROP COLUMN IF EXISTS total_amount;
0 голосов
/ 18 июня 2019

Если вы используете Microsoft SQL Server (поскольку в вашем коде dbo.), Вам следует ОБНОВИТЬ столбец, а не изменять его. Похоже, вам не хватает скобок вокруг вашей суммы:

UPDATE dbo.transaction_payment
SET total_amount = CAST((CAST(amount_transac AS DECIMAL(12,2))) + (CAST(amount_tip AS decimal(12,2)))AS decimal(12,2))
...