0

我有这个查询:

SELECT 
  client, 
  month1,
  month2,
  month3,
  month4,
  month5,
  month6,
  (isnull(month1, 0) +
   isnull(month2, 0) +
   isnull(month3, 0) +
   isnull(month4, 0) +
   isnull(month5, 0) +
   isnull(month6, 0)) /6 as prom
FROM client_total_sales

月份可以有空值。

我尝试使用round,转换数据类型,但问题仍然存在。

SQL Server Management Studio 在加载查询期间显示错误,我的意思是在错误出现之前查看一些结果。

错误信息:男士。8115, Level 16, State 2, Line 1 Error de desbordamiento aritmético (算术溢出错误) al convertir expression al tipo de datos int.

4

1 回答 1

1

如果错误出现Arithmetic Overflow在计算列中,prom您可以强制提升到可以保存更多数据的数据类型,方法是强制转换计算参数之一,如下所示:

SELECT 
  client, month1, month2, month3, month4, month5, month6,
  (
   cast(isnull(month1, 0) as bigint) +
   isnull(month2, 0) + isnull(month3, 0) +
   isnull(month4, 0) + isnull(month5, 0) +
   isnull(month6, 0)) /6 as prom
FROM client_total_sales

不知道 monthX 是什么数据类型,我选择 BIGINT 作为示例。SQL Server 不会自动升级为 BIGINT,因此您必须自己进行。

于 2013-07-18T22:31:56.390 回答