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;
Результат для приведенного выше запроса:SQL: уменьшить размер результирующего набора
Distributor Sales MarketSharesVolume
WARNER 2836192 58.131470300744400
TF1 268668 5.506702600797200
В основном я хочу MarketSharesVolume
, чтобы иметь значения, как 58.1
Я попытался изменить Прецизинность decimal(14, 4)
но каждый комбинированный даритель me a Arithmetic Overflow error
. Есть ли способ, которым я мог бы обрезать столбец?
Вы можете использовать некоторые функции для своей проблемы. Просто взгляните на эту статью. http://www.mssqltips.com/sqlservertip/1589/sql-server-rounding-functions--round-ceiling-and-floor/ – Tjasun
wrap '((Cast (SUM (r.SalesVolume) как десятичный (14, 4)))/(SELECT SUM (r.SalesVolume) FROM RawData r)) * 100) 'в [' ROUND'] (https://msdn.microsoft.com/en-us/library/ms175003.aspx) – ughai
@ughai Пробовал это, но результат, который я получаю, это '58.10000000000000' –