SQL Serverは、「式をデータ型intに変換する算術オーバーフローエラー」を返します。


回答:


24

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する必要があります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;

1
SQL Serverはintからbigintに自動的に昇格しませんか?#TILしたがって、合計がbigintになる可能性がある場合は、値をでラップする必要がありますCONVERT()。綺麗な。
エヴァンキャロル

その質問に関するあなたの例はどのように機能し、私のものは機能しませんでしたか?それはあなたの答えですか?
エヴァンキャロル

@EvanCarrollわからない!ランダムな値の分布が異なっていて、私のものがにならないほど低く歪んでいる可能性があると思いますBIGINT。しかし、それは私の最善の推測です。
エリックダーリン

:@EvanCarroll私は、より効率的な例でポールW.とそれについて話した後dbfiddleを書いて、それが原因でパーティションの要件のdbfiddle上で実行されませんのでご注意dbfiddle.uk/...
エリック・ダーリン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.