我正在尝试更改a以添加新的计算列,但最终结果是不带...的十进制(???)
我想出了
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)
)
但是引擎告诉我我出错了。我将所有值都强制转换为没有隐式类型并失去精度,然后强制转换最终结果。
答案 0 :(得分:1)
您不能“更改”计算列,所以:
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;
答案 1 :(得分:0)
假定您正在使用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))