SELECT p.Distributor, SUM(r.SalesVolume) as Sales,
((Cast(SUM(r.SalesVolume) as decimal(14, 4)) / (SELECT SUM(r.SalesVolume) FROM RawData r)) * 100) as MarketSharesVolume
FROM RawData r
INNER JOIN Product p
ON r.ProductId = p.ProductId
WHERE p.Distributor in ('TF1','WARNER')
GROUP BY p.Distributor;
以上查询的结果是:
Distributor Sales MarketSharesVolume
WARNER 2836192 58.131470300744400
TF1 268668 5.506702600797200
基本上我希望 MarketSharesVolume
有类似于 58.1
的值。我尝试过改变精度 decimal(14, 4)
,但每一种组合都会给我一个 算术溢出错误
。是否有一种方法可以截断该列?
((Cast(SUM(r.SalesVolume) as decimal(14, 4)) / (SELECT SUM(r.SalesVolume) FROM RawData r)) * 100)
用ROUND
函数包装。 - ughai58.10000000000000
。 - Tauseef Hussain