我的SQL脚本遇到错误:
将数值转换为数值类型的算术溢出错误
select x.MemberName,x.DOB,x.FilePath,x.Medication,x.NDC,x.Directions,x.Name,x.Strength,x.GenericName,x.QtyOrdered,x.DaysSupply,x.DateFilled, CASE WHEN x.test = 0 THEN 'N/A' WHEN compliance > 100.0 THEN '100.0' ELSE CONVERT(VARCHAR(5), CAST(FLOOR(compliance *10)/10.0 AS DECIMAL(3,1))) END as [Compliance]
我在语法行上方遇到错误。
这是您的问题:
declare @compliance decimal(10,5) set @compliance = 100.0 -- <---------------- select CAST(FLOOR(@compliance *10)/10.0 AS DECIMAL(3,1))
引发“将数字转换为数据类型数字的算术溢出错误”错误。更改为DECIMAL(4,1)作品,或者按照@paola的建议,将您的状况更改为>= 100.0
DECIMAL(4,1)
>= 100.0
decimal(p,s):
p(精度)是小数点左边和右边都将存储的最大十进制数字总数。精度必须是1到最大精度38之间的值。默认精度是18。 s(小数位数)是将存储在小数点右边的小数位数。从p减去此数字,以确定小数点左边的最大位数。
p(精度)是小数点左边和右边都将存储的最大十进制数字总数。精度必须是1到最大精度38之间的值。默认精度是18。
s(小数位数)是将存储在小数点右边的小数位数。从p减去此数字,以确定小数点左边的最大位数。
在您的情况下,decimal(3, 1)表示总共3位数字,小数点右边是1位数字,
decimal(3, 1)
99.9
而decimal(4,1)总共提供了4位数字,小数点右边是1位数字,
decimal(4,1)
999.9