简体   繁体   English

在执行查询时将数值转换为数值类型的算术溢出错误

[英]Arithmetic overflow error converting numeric to data type numeric on query execution

I am running 2 SQL statements against a temp table to do some calculations. 我对一个临时表运行2条SQL语句以进行一些计算。 The first one runs well, but on the 2nd I am getting the following error and I don't know why. 第一个运行良好,但是第二个却出现以下错误,我不知道为什么。

Msg 8115, Level 16, State 8, Line 123 消息8115,第16级,状态8,第123行
Arithmetic overflow error converting numeric to data type numeric. 将数字转换为数据类型数字的算术溢出错误。

Maybe you can see something that I am missing. 也许您可以看到我想念的东西。 Below are the statements and the table that I am using. 以下是我正在使用的语句和表。

Statements: 声明:

update down
Set AMOUNT = case when (up.id is null) then null else  
case when(abs(down.SHAMT)<abs(up.SHAMT) 
and (down.SHQTY<up.SHQTY or down.SHPU#<up.SHPU#) 
and down.GROUPID is not null) then abs(up.SHAMT)-abs(down.SHAMT)
else case when(abs(down.SHAMT)>abs(up.SHAMT) 
and (down.SHQTY>up.SHQTY or down.SHPU#>up.SHPU#) 
and down.GROUPID is not null) then abs(down.SHAMT)-abs(up.SHAMT) end end end
From #ServiceChange down 
join #ServiceChange up 
on up.id = down.id-1 and up.SHCUST = down.SHCUST 
and up.SHDESC = down.SHDESC
where down.GROUPID in ('SD','SI')

update down
Set AMOUNT= case when (up.id is null) then null else  
case when(abs(down.SHAMT)<abs(up.SHAMT) 
and down.GROUPID is not null) then abs(up.SHAMT)-abs(down.SHAMT)
else case when(abs(down.SHAMT)>abs(up.SHAMT) 
and down.GROUPID is not null) then abs(down.SHAMT)-abs(up.SHAMT) end end end
 From #ServiceChange down 
join #ServiceChange up 
on up.id = down.id-1 and up.SHCUST = down.SHCUST 
and up.SHDESC = down.SHDESC
where down.GROUPID in ('PD','PI')

Table: 表:

CREATE TABLE #ServiceChange
(
    [ID] [int] identity(1,1),
    [ORDER] [numeric](8, 0) NOT NULL,
    [SHCOMP] [char](2) NOT NULL,
    [SHCRTD] [numeric](8, 0) NOT NULL,
    [SHCUST] [numeric](7, 0) NOT NULL,
    [SHDESC] [char](35) NOT NULL,
    [SHTYPE] [char](1) NOT NULL,
    [SHAMT] [numeric](9, 2) NOT NULL,
    [SHCRTT] [numeric](6, 0) NOT NULL,
    [SHQTY] [numeric](5, 0) NOT NULL,
    [SHPU#] [numeric](2, 0) NOT NULL,
    [CBLNAM] [char](30) NOT NULL,
    [CSTRDT] [numeric](8, 0) NOT NULL,
    [TBODY] [char](6) NOT NULL,
    [GROUPID] [char](2) NULL,
    [AMOUNT] [numeric](8, 2) NULL
)

If more info is need it, please let me know. 如果需要更多信息,请告诉我。

也许是因为您要用[SHAMT] [numeric](9, 2) [AMOUNT] [numeric](8, 2)的值更新[AMOUNT] [numeric](8, 2) [SHAMT] [numeric](9, 2)吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM