SUM()
运行此命令时SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
我得到了,
Arithmetic overflow error converting expression to data type int.
关于什么的任何想法是什么原因?
我只是按照此答案中的说明进行操作。
#1 楼
对于大于INT
最大值(2,147,483,647)的值,您将要使用COUNT_BIG(*)。 SUM
到Amount
。SELECT COUNT_BIG(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
#2 楼
此问题是由SUM()
函数引起的您必须将
t.Amount
转换为BIGINT
SELECT COUNT(*) AS [Records], SUM(CAST(t.Amount AS BIGINT)) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
参考
https://stackoverflow.com/questions/8289310/how-to-prevent-arithmetic-overflow-error-when-using-sum-on-int-column