操作数据以使用SQL Server返回总值

时间:2017-08-30 11:20:09

标签: sql-server

操纵此数据以返回每个股票中客户持有的总价值(单位*价格)。

select  sh.StockCode , sum(sh.Units*sp.PriceNZD) as 'TotalPrice'
 from StockPrice sp
inner join StockHoldings sh  on sp.StockCode=sh.StockCode
group by sh.StockCode
order by TotalPrice desc;
  

错误:消息8117,级别16,状态1,行1   操作数数据类型nvarchar对于乘法运算符无效。**

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您必须将数据转换为正确的格式:

select  sh.StockCode ,
    sum(CAST(sh.Units AS INT)*CAST(sp.PriceNZD AS DECIMAL(18,2))) AS TotalPrice
 from StockPrice sp
inner join StockHoldings sh  on sp.StockCode=sh.StockCode
group by sh.StockCode
order by TotalPrice desc;

如果您使用SQL Server 2012+,可以使用TRY_CAST来避免无效转换(无效数据将被视为NULL)

正确的解决方案:使用正确的数据类型更改架构并存储数据。