統計查詢時,如下代碼報錯
select name, SUM(itemcount) as cnt from t1
錯誤信息:Arithmetic overflow error converting expression to data type int.(將expression轉化為數據類型int時發生算術溢出錯誤)
原因:itemcount 為int類型,在sum聚合函數求該列和時,長度超出了int范圍。
首先我們來看一下相關數據類型的范圍:
tinyint:從0到255 之間的整數
smallint:從- 215(-32768)到215(32767)之間的整數
int:從- 231(-2147483648)到231(2147483647)之間的整數
bigint:從 -263 (-9223372036854775808) 到263-1 (9223372036854775807) 的整型數據(所有數字)
decimal:從-1038-1到1038-1的固定精度和范圍的數值型數據
由此可見,我們需要在sum之前吧該列轉換為范圍更大的類型即可,代碼如下:
select name, SUM(cast(itemcount as bigint)) as cnt from t1 或者 select name, SUM(convert(numeric(20,0),itemcount)) as cnt from t1