我有像
这样的数据id
27.45
29.1
27.45
21.95
18.1
51.75
0
21.45
41.94
21.95
32.95
我的查询是
SUM(CASE WHEN ab.dates BETWEEN bc.fst_sales_date AND BC.[WEEK4] THEN
[salesval] -- my initial try
ELSE 0 END) week4_qtyvalues
面临错误
将nvarchar值'41 .94'转换为数据时转换失败 输入int。
我已经检查了
SUM(CASE WHEN ab.dates BETWEEN bc.fst_sales_date AND BC.[WEEK4] THEN
CONVERT(float,[salesval]) -- this is what I've tried
ELSE 0 end) week4_qtyvalues
和
SUM(CASE WHEN ab.dates between bc.fst_sales_date AND BC.[WEEK4] THEN
CAST([salesval]AS int) -- this is what I've tried
ELSE 0 END) week4_qtyvalues
无论我的尝试如何,我仍然面临同样的错误。
答案 0 :(得分:2)
res
答案 1 :(得分:1)
这种情况正在发生,因为你有一个nvarchar而不是一个浮点数来转换为int。您应该首先将[salesval]转换为float,然后将其转换为int。像这样:
CAST(CAST([salesval] AS float) AS INT)
答案 2 :(得分:0)
由于SQL Server处理混合了多种数据类型的语句的方式,它仍然会尝试获取salesval字段并将其视为int。
所以,首先,尝试转换0。
其次,你几乎肯定不想使用漂浮物 - 它用于科学计算,只需要它的大范围并且不精确。请改为使用十进制。