由于十进制数据类型 (SQL),使用 CTE 错误更新累积值



我正在尝试按日期和合同将列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),本质上是一个整数。为了获得所需的行为,您需要评估数据以获取要分配的正确值。

最新更新