为计算列添加强制 DECIMAL 类型的列
ADD COLUMN with forced DECIMAL type for computed column
我正在尝试更改 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)
)
但是引擎告诉我出错了。我将每个值转换为没有隐式类型并失去精度,然后转换最终结果。
假设您使用的是 Microsoft SQL 服务器(因为您的代码中有 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))
您不能 "alter" 计算列,因此:
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;
我正在尝试更改 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)
)
但是引擎告诉我出错了。我将每个值转换为没有隐式类型并失去精度,然后转换最终结果。
假设您使用的是 Microsoft SQL 服务器(因为您的代码中有 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))
您不能 "alter" 计算列,因此:
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;