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.
その原因について何か考えがありますか?
この回答。
回答
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;
SUM
で発生している場合は、Amount
を。
SELECT COUNT(*) AS [Records], SUM(CONVERT(BIGINT, t.Amount)) AS [Total] FROM dbo.t1 AS t WHERE t.Id > 0 AND t.Id < 101;
回答
この問題の原因はSUM()
関数
t.Amount
を<としてキャストする必要がありますdiv id = "51c49ef734">
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;
リファレンス