0

私はこのクエリを持っています:

SELECT 
  client, 
  month1,
  month2,
  month3,
  month4,
  month5,
  month6,
  (isnull(month1, 0) +
   isnull(month2, 0) +
   isnull(month3, 0) +
   isnull(month4, 0) +
   isnull(month5, 0) +
   isnull(month6, 0)) /6 as prom
FROM client_total_sales

月は null 値を持つことができます。

ラウンドでデータ型を変換してみましたが、問題は解決しません。

SQL Server Management Studio は、クエリの読み込み中にエラーを表示します。つまり、エラーが発生する前にいくつかの結果が表示されます。

エラー メッセージ: メンズ。8115、レベル 16、状態 2、行 1 Error de desbordamiento aritmético (算術オーバーフロー エラー) al convertir expression al tipo de datos int.

4

1 に答える 1

1

エラーがArithmetic Overflow計算列にあるprom場合は、次のように計算のパラメーターの 1 つをキャストすることで、より多くのデータを保持できるデータ型に強制的に昇格させることができます。

SELECT 
  client, month1, month2, month3, month4, month5, month6,
  (
   cast(isnull(month1, 0) as bigint) +
   isnull(month2, 0) + isnull(month3, 0) +
   isnull(month4, 0) + isnull(month5, 0) +
   isnull(month6, 0)) /6 as prom
FROM client_total_sales

monthX のデータ型がわからないので、例として BIGINT を選択します。SQL Server は自動的に BIGINT に昇格しないため、自分で行う必要があります。

于 2013-07-18T22:31:56.390 に答える