このコマンドを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
max(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
を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;
この問題は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;
参照