Sql 数据类型转换

Sql 数据类型转换,sql,sql-server,Sql,Sql Server,我正在尝试执行以下查询 select distinct pincode as Pincode,CAST(Date_val as DATE) as Date, SUM(cast(megh_38 as int)) as 'Postage Realized in Cash', SUM(cast(megh_39 as int)) as 'MO Commission', from dbo.arrow_dtp_upg group by pincode,Date_Val 但我收到一个错误“将nvarchar

我正在尝试执行以下查询

select distinct pincode as Pincode,CAST(Date_val as DATE) as Date,
SUM(cast(megh_38 as int)) as 'Postage Realized in Cash',
SUM(cast(megh_39 as int)) as 'MO Commission',
from dbo.arrow_dtp_upg
group by pincode,Date_Val
但我收到一个错误“将nvarchar值“82.25”转换为数据类型int时转换失败。”

我是否使用了错误的数据类型?

您可以尝试以下方法:

cast(megh_38 as decimal(10,2))
cast(megh_39 as decimal(10,2))

一个可能的问题是分隔符(点对逗号)。 问题-为什么在存储浮点值或int值时更喜欢nvarchar?也许十进制或浮点是更好的解决方案?

字符串“82.25”表示浮点(或十进制)而不是整数,因此如果需要浮点,请使用
cast(megh_38作为浮点)


如果您只需要整数部分,请使用
floor(cast(megh_38作为float))

谢谢您的回答,我尝试使用float,但在将数据类型nvarchar转换为float时遇到了“错误”。警告:聚合或其他集合操作会消除空值。“作为错误。您的一个值为空。”。如果要将其视为零,请使用“coalesce(floor(cast(megh_38 as float)),0”。