Teradata: деление и большие десятичные дроби - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь разделить два десятичных (15,2) числа и вернуть десятичное число высокой точности из 15 мест, но я продолжаю получать ошибку переполнения [2616] Numeri c для всего, кроме 10 десятичных знаков, есть ли другой способ записать это, чтобы получить десятичный результат из 15 знаков справа от периода?

select (приведение (19983.74 к десятичному (15,2)) * 1.0000000000000) / (приведение (15897.40 к десятичному (15, 2)) * 1.0000000000000)

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Для более сложных вычислений я предпочитаю приводить 1-й операнд к NUMBER, это приводит к максимально возможной точности:

SELECT Cast(19983.74 AS NUMBER)/15897.40

1.25704454816510875992300627775611106219

Наконец, приведите обратно к тому, что вам нужно:

SELECT Cast(Cast(19983.74 AS NUMBER)/15897.40 AS DECIMAL(38,15))

1.257044548165109
0 голосов
/ 18 апреля 2020

См. Документацию Teradata . Значения по умолчанию для точности результата зависят от значения параметра MaxDecimal, но значение CAST, превышающее значение параметра MaxDecimal, будет переопределено.

SELECT CAST(19983.74 AS DECIMAL(38,15))/15897.40
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...