Eva*_*oll 27 sql-server aggregate datatypes sql-server-2017
当我运行此命令时 SUM()
SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Run Code Online (Sandbox Code Playgroud)
我越来越,
Arithmetic overflow error converting expression to data type int.
Run Code Online (Sandbox Code Playgroud)
关于它的原因是什么的任何想法?
我只是按照这个答案中的说明进行操作。
Eri*_*ing 36
对于大于INT最大值 (2,147,483,647) 的值,您需要使用COUNT_BIG (*)。
SELECT COUNT_BIG(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Run Code Online (Sandbox Code Playgroud)
如果它发生在SUM,则需要转换Amount为BIGINT.
SELECT COUNT(*) AS [Records], SUM(CONVERT(BIGINT, t.Amount)) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Run Code Online (Sandbox Code Playgroud)
小智 11
此问题是由SUM()功能引起的
你必须 CASTt.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;
Run Code Online (Sandbox Code Playgroud)
参考
| 归档时间: |
|
| 查看次数: |
97950 次 |
| 最近记录: |