SQL Server/SSMS,选择>;案例陈述错误“;转换varchar值时转换失败';2000.000000';至数据类型int“;
我有一个包含多条记录的表(2000多万条) 我有一列,数据类型当前为varchar,我试图使用select>case语句,但是我一直收到以下错误: “将varchar值'2000.000000'转换为时,转换失败 数据类型int。“ 我不明白的是,当它是一个数字时,为什么它会被视为一个varchar值。每次我尝试运行代码时,它都会在不同的行、相同的问题、不同的编号上失败 这是我的代码-有人能指出我做错了什么吗?谢谢SQL Server/SSMS,选择>;案例陈述错误“;转换varchar值时转换失败';2000.000000';至数据类型int“;,sql,sql-server,casting,int,Sql,Sql Server,Casting,Int,我有一个包含多条记录的表(2000多万条) 我有一列,数据类型当前为varchar,我试图使用select>case语句,但是我一直收到以下错误: “将varchar值'2000.000000'转换为时,转换失败 数据类型int。“ 我不明白的是,当它是一个数字时,为什么它会被视为一个varchar值。每次我尝试运行代码时,它都会在不同的行、相同的问题、不同的编号上失败 这是我的代码-有人能指出我做错了什么吗?谢谢 Select Amount_range, Sum(isnull(
Select
Amount_range,
Sum(isnull(cast(Amount as float),0)) as TotalAmt,
count(*) as Count
FROM (Select Amount,
Sum(isnull(cast(Amount as float),0)) as TotalAmt,
count(*) as Count,
case
when Amount between 0 and 50000.000000 then '0=50'
when Amount between 50000.100000 and 100000.000000 then '50=100'
when Amount > 100000.000000 then '100+'
end as Amount_range
from [dbo].[TableName001] group by Amount) a
where Amount is not null
Group by Amount_range
Having count(*) > 0;
谢谢 您还需要在
案例中计算金额
Select Amount_range,
Sum(isnull(cast(Amount as float),0)) as TotalAmt,
count(*) as Count
FROM (Select Amount,
Sum(isnull(cast(Amount as float),0)) as TotalAmt,
count(*) as Count,
case
when cast(Amount as float) between 0 and 50000.000000 then '0=50'
when cast(Amount as float) between 50000.100000 and 100000.000000 then '50=100'
when cast(Amount as float) > 100000.000000 then '100+'
end as Amount_range
from [dbo].[TableName001] group by Amount) a
where Amount is not null
Group by Amount_range
Having count(*) > 0;
您需要将amount列转换为float as-between运算符仅适用于数值列,不适用于varchar列列的数据类型是什么amount@JayShankarGupta是瓦查尔。我个人使用大容量插入将数据输入sql Server,我建议不要使用浮点
,它不如十进制
和整数
准确。欢迎:-)@SS360