【发布时间】:2018-10-10 01:42:22
【问题描述】:
运行简单聚合函数时出现“将表达式转换为数据类型 int 的算术溢出错误”错误(请参见下面的代码)。当我限制日期范围时,我可以看到结果实际上超出了 INT 数据类型限制...我尝试将整个表达式转换为 BIGINT 没有成功。有谁知道我该如何解决这个问题?
所有这 3 个查询都会引发上述相同的错误:
Select (SUM(ACDTalkTimeInSec) + SUM(TotAcwTimeInSec) + SUM(HoldTimeInSec)) as AHT
From ColTelephony.dbo.vwACDSkillCombined acd
Where WorkDte between '1/2/2018' AND '10/5/2018'
Select CAST(Cast(SUM(ACDTalkTimeInSec) AS BIGINT) + CAST(SUM(TotAcwTimeInSec) AS BIGINT) + CAST(SUM(HoldTimeInSec) AS BIGINT) AS BIGINT) as AHT
From ColTelephony.dbo.vwACDSkillCombined acd
Where WorkDte between '1/2/2018' AND '10/5/2018'
Select Cast(((SUM(ACDTalkTimeInSec) + SUM(TotAcwTimeInSec) + SUM(HoldTimeInSec))) AS BIGINT) as AHT
From ColTelephony.dbo.vwACDSkillCombined acd
Where WorkDte between '1/2/2018' AND '10/5/2018'
【问题讨论】:
-
你需要在求和之前进行转换,而不是之后。
-
谢谢!工作完美!我讨厌答案如此简单,哈哈。请张贴作为答案,我会这样标记它。再次感谢!
标签: sql-server error-handling overflow aggregate-functions