我有一个十进制类型的列,我需要像这样使用sum函数:
declare @credit decimal = (select
( select ISNULL(SUM(Convert(DECIMAL(13,2), Amount)),0)
from TransactionDetail as t1
where t1.AccountFrom = @fromAccount and t1.AccountTo = @toAccount
) -
( select ISNULL(SUM(Convert(DECIMAL(13,2),Amount)),0)
from TransactionDetail as t1
where t1.AccountFrom = @toAccount and t1.AccountTo = @fromAccount
)
)
select @credit
输出应为十进制数字,如: 13.56
然而,结果总是int,有什么建议吗?
答案 0 :(得分:5)
默认scale
为0.如果您希望将结果作为特定格式,请尝试向变量显式添加精度和比例:
declare @credit decimal(13, 2) = (select . . .
此行为很正常documented:
将存储在右侧的小数位数 小数点。从p中减去该数字以确定 小数点左边的最大位数。最大值 可以存储在右侧的小数位数 小数点。比例必须是从0到p的值。 cSale可以 仅在指定精度时指定。 默认比例为0;