我正在对一个临时表运行2条SQL语句来进行一些计算。第一个运行良好,但是第二个却出现以下错误,我不知道为什么。
消息8115,级别16,状态8,行123
将数字转换为数据类型数字的算术溢出错误。
也许您可以看到我想念的东西。以下是我正在使用的语句和表。
声明:
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')
桌子:
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
)
如果需要更多信息,请告诉我。
也许是因为您要更新[AMOUNT] [numeric](8, 2)
值为[SHAMT] [numeric](9, 2)
?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句