我有十进制值的字段,但在数据库中导入为nvarchar(50)
数据类型,看起来像这样:
时间 | (订购产品销售) | (订购单位) | 2022 - 01 - 01 t00:00:00 | 55.60美元 | 4 |
---|---|---|
2022 - 01 - 03 t00:00:00 | 652.54美元 | 13 |
导致错误的问题是[Ordered_product_sales]列中的数据字符串包含不能转换为numeric
数据类型的字符。在执行CAST
函数之前,必须首先对字符串进行消毒,以删除所有不能转换的字符,特别是示例数据中存在的$
。
这个应该可以工作:
SELECT
[Time]
,SUM(CAST(REPLACE([Ordered_product_sales], '$', '') AS NUMERIC(10, 2)))
AS Sales_per_day,
,SUM(CAST([Units_ordered] AS INT)) AS num_of_units_ordered
FROM [dbo].[salesDashboard]
您应该花一些心思和精力来改进表和列的数据类型设计。