Расчет суммы с использованием точности - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть таблица зарплат, в которой есть столбцы Amount и Amount Precision.

Используя точность, я хочу получить фактическую сумму.

enter image description here

Пожалуйста, помогите мне рассчитать фактическую сумму, используя точность.

Ответы [ 4 ]

5 голосов
/ 29 апреля 2020

использование POWER(). Умножение на 1.0 требуется для преобразования Amount в integer в decimal

ActualAmount = Amount * 1.0 / Power(10, AmountPrecision)
3 голосов
/ 29 апреля 2020

Вы можете использовать следующий запрос:

select CAST(Amount as double precision) / power(10,  AmountPrecision) from AmountTest

Предполагая, что AmountTest является именем таблицы. Вы можете заменить его на имя, данное вами.

1 голос
/ 29 апреля 2020
DECLARE @T TABLE (
   Amount INT,
   AmountPrecision INT
) 

INSERT INTO @T VALUES(1,1),(51,1),(51,2),(934,3),(1024,2)
SELECT 
   *,
   CAST(AMOUNT AS FLOAT)/(CONCAT(1,REPLICATE(0,AMOUNTPRECISION))) AS ACTUALAMOUNT
FROM @T
0 голосов
/ 29 апреля 2020

Вы также можете попробовать разделить, просто создав значение с помощью функции REPLICATE().

CREATE TABLE Data (id int, AmountPrecision int)
INSERT INTO Data (id, AmountPrecision) VALUES
  (1, 1)
 , (51, 1)
 , (51, 2)
 , (934, 3)
 , (1024, 2)

Select id
   , Cast('1' + REPLICATE('0', AmountPrecision) as int) as DivideBy
   , Cast(id * 1.0 / Cast('1' + REPLICATE('0', AmountPrecision) as int)
   as float) as FormattedNumber
from Data

enter image description here Live db <> fiddle demo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...