【发布时间】:2018-04-20 10:33:54
【问题描述】:
我有一个包含多条记录的表(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;
谢谢!
【问题讨论】:
-
列数量的数据类型是什么
-
@JayShankarGupta 它的 varchar。我使用批量插入将数据导入 sql server
-
我个人建议不要使用
float,它不如decimal和int准确。
标签: sql sql-server casting int