SQL Server/SSMS,选择>;案例陈述错误“;转换varchar值时转换失败';2000.000000';至数据类型int“;

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(

我有一个包含多条记录的表(2000多万条)

我有一列,数据类型当前为varchar,我试图使用select>case语句,但是我一直收到以下错误:

“将varchar值'2000.000000'转换为时,转换失败 数据类型int。“

我不明白的是,当它是一个数字时,为什么它会被视为一个varchar值。每次我尝试运行代码时,它都会在不同的行、相同的问题、不同的编号上失败

这是我的代码-有人能指出我做错了什么吗?谢谢

   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