2

将此行添加到我的查询中时:

convert(varchar(20), convert(varchar(20),
sum(case when tsr.other like '%aa%' then tsr.block1 else 0 end) +
sum(case when tsr.other like '%aa%' then tsr.block2 else 0 end) +
sum(case when tsr.other like '%aa%' then tsr.block3 else 0 end) +
sum(case when tsr.other like '%aa%' then tsr.block4 else 0 end)) * 450) 

我收到此错误消息:

将 varchar 值“0.00”转换为数据类型 int 时转换失败

块列中的数据是天 - 例如10.0

有任何想法吗?

我已经修好了,只是将 450 更改为 450.0。

varchars 的原因是这只是多个联合选择语句中的 1 个中的 1 行。

4

2 回答 2

1

10.0 不是整数 - 它是小数。

尝试

declare @i int 
select @i = convert(decimal(9,4),'10.0')
select @i

并且从十进制到整数的转换将隐式完成。

于 2012-11-02T11:50:53.893 回答
1
 '10.0' isn't an int/decimal  - it's a varchar .   
 do any mathematical calculation only on decimal/numeric/float/int values.

 SELECT convert(varchar(20), convert(decimal(10,2), sum(case when
 tsr.other like '%aa%' then  convert(decimal(10,2),tsr.block1) else 0
 end) + sum(case when tsr.other like '%aa%' then 
 convert(decimal(10,2),tsr.block2) else 0 end) + sum(case when
 tsr.other like '%aa%' then  convert(decimal(10,2),tsr.block3) else 0
 end) + sum(case when tsr.other like '%aa%' then 
 convert(decimal(10,2),tsr.block4) else 0 end)) * 450)
于 2012-11-02T12:34:21.627 回答