【问题标题】:Msg 232, Level 16, State 3, Line 5 Arithmetic overflow error for type int消息 232,级别 16,状态 3,第 5 行 int 类型的算术溢出错误
【发布时间】:2016-08-10 06:29:31
【问题描述】:

如何找到两个变量之间的差异?

error is Msg 232, Level 16, State 3, Line 5
Arithmetic overflow error for type int, value = -39827814763.955299.

Msg 232, Level 16, State 3, Line 12
Arithmetic overflow error for type int, value = -39827814763.950142.

查询如下.. TIA

declare  @sql int 
declare @sql1 int
declare @sql3 int

set @sql = (select sum(sfg.amount) as VM_Amount_LCY
  from Setup_Company sc inner join stg_dim_dimension02 sdd on 
sdd.company_id = sc.company_id inner  join stg_fact_dimension_set_entry fdse on fdse.dim02_sk = sdd.dimension_id and fdse.company_id=sdd.company_id
inner join stg_fact_gl sfg on sfg.[dimension set id] = fdse.[Dimension Set ID] and sfg.company_id= fdse.company_id )



set @sql1 = (select sum(sfg.amount) as BI_Amount_LCY from [NORRIQ Drink-IT BI 2013 India].dbo.Setup_Company sc inner join [NORRIQ Drink-IT BI 2013 India].dbo.dim_dimension02 sdd on 
sdd.company_id = sc.company_id inner  join [NORRIQ Drink-IT BI 2013 India].dbo.fact_dimension_set_entry fdse on fdse.dim02_sk = sdd.dimension_id and fdse.company_id=sdd.company_id
inner join [NORRIQ Drink-IT BI 2013 India].dbo.fact_gl sfg on sfg.[dimension set id] = fdse.[Dimension Set ID] 
and sfg.company_id= fdse.company_id )


select @sql3 = (-(@sql) - (-(@sql1)))

【问题讨论】:

  • 似乎 int 太小了。改用最大小数(如果需要大整数,则使用 bigint)。

标签: sql sql-server sql-server-2008 tsql msbi


【解决方案1】:
-39827814763.955299

上面的值是十进制的,你正在尝试存储它一个 INT.INT 可以存储低于范围内的数字..

-2,147,483,648 to 2,147,483,647

您可以使用 BIGINT 来克服 Ari 主题溢出..

declare  @sql BIGINT 
declare @sql1 BIGINT 
declare @sql3 BIGINT 

但是对于上述数据类型,您会失去精度,如果您想要精度,请使用下面的数字..

 declare  @sql numeric(22,6)

【讨论】:

    【解决方案2】:

    SUM 中的表达式类型决定了您的案例 sfg.amount 的返回类型。例如,您可以在执行 SUM 之前将其转换为 BIGINT,如下所示:

    SELECT SUM( CAST( sfg.amount AS BIGINT )) ....
    

    【讨论】:

      猜你喜欢
      • 2020-11-11
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多