我有一些带有十进制值的字段,但在数据库中导入为nvarchar(50)
数据类型,如下所示:
| 时间|(订购产品销售)|(订购单位)|
| - ------| - ------| - ------|
| 2022年1月1日星期一00:00:00|五十五元六角|四个|
| 2022年1月3日上午00时00分|六百五十二块五四|十三|
- 目标**:我想聚合(SUM)这些字段,以获得订单总和和订购的总件数
我尝试将这些值转换为numeric(10,2)
,因为我想聚合这些字段(SUM):
SELECT
[Time],
SUM(CAST([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]
WHERE
Ordered_product_sales <> '0.00'
AND Ordered_product_sales IS NOT NULL
GROUP BY
Time
但是,我收到以下错误:
将数据类型nvarchar转换为numeric时出错。
1条答案
按热度按时间wlzqhblo1#
导致错误的原因是[Ordered_product_sales]列中的数据字符串包含无法转换为
numeric
数据类型的字符。在执行CAST
函数之前,必须首先清理字符串以删除所有无法转换的字符,特别是示例数据中存在的$
。这应该行得通:
您应该考虑并努力改进表和列的数据类型设计。