我正在尝试按日期和合同将列MontanteRecuperacao
的累积值montanterecuperacao_acumulada
。
但是十进制数据类型正在成为一个问题,我不知道为什么,当变量为 INT 类型时,这有效。
这是错误消息
Msg 4187,级别 16,状态 1,过程 spCalculaRecuperacao,第 123 行
接收变量的数据类型十进制无法存储列"montanterecuperacao_acumulada"的数据类型十进制的所有值,而不会丢失数据。
法典:
DECLARE @MontanteRecuperacao_running DECIMAL,
@montanterecuperacao_acumulada_running DECIMAL,
@Contrato VARCHAR(10) = '' ;
WITH CTE AS
(
SELECT TOP 100 PERCENT
MontanteRecuperacao, montanterecuperacao_acumulada, ContratoId
FROM
MovimentoRecuperacao
ORDER BY
[ContratoId], [DtReferencia] DESC
)
UPDATE CTE
SET @montanterecuperacao_acumulada_running = montanterecuperacao_acumulada =
CASE
WHEN @Contrato <> ContratoId
THEN montanterecuperacao_acumulada
ELSE @montanterecuperacao_acumulada_running - @MontanteRecuperacao_running
END,
@MontanteRecuperacao_running = MontanteRecuperacao,
@Contrato = ContratoId
您已声明DECIMAL
参数,但未指定精度或小数位数:
@MontanteRecuperacao_running DECIMAL , @montanterecuperacao_acumulada_running DECIMAL
默认值为DECIMAL(18,0)
,本质上是一个整数。为了获得所需的行为,您需要评估数据以获取要分配的正确值。