powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
5 сообщений из 5, страница 1 из 1
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
    #39828707
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал простой селект, в котором, в частности

Код: sql
1.
2.
3.
4.
,sum(case when T.ID = 1 then d.A  * D.Price else 0 end) -- РЕПО обратные
,sum(case when T.ID = 2 then d.A * D.Price  else 0 end) -- РЕПО прямые
--Сообщение 8115, уровень 16, состояние 1, строка 25
--Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.



Поле Price Decimal (20,10), A - money.

Что делать?
...
Рейтинг: 0 / 0
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
    #39828721
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbvcx,

Convert (Decimal (20,10), sum(case when T.ID = 2 then d.A * D.Price else 0 end))

Думаю это вам поможет
...
Рейтинг: 0 / 0
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
    #39828831
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Badgermnbvcx,

Convert (Decimal (20,10), sum(case when T.ID = 2 then d.A * D.Price else 0 end))

Думаю это вам поможет
к сожалению, не помогло - та же ошибка(

В итоге сделал так
Код: sql
1.
sum(case when T.ID = 2 then d.A * cast(D.Price as float)  else 0 end)


но это, наверное, не очень хорошо - копейки какие-нибудь могут исказиться?
...
Рейтинг: 0 / 0
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
    #39828833
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо не к float конвертить, а к decimal, чтобы результирующее значение влезло в результрующую точночть: https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/precision-scale-and-length-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
    #39828884
nullin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
decimal(35, 10)

Код: sql
1.
2.
3.
4.
5.
6.
select X."ID", X."A", X."Price"
     , convert(decimal(35, 10), X."A" * X."Price") as "Result"

   from (values (2
               , convert(decimal(20, 10), -9999999999.9999999999)
               , convert(decimal(19, 4), (-1.0 - convert(bigint, convert(varbinary(18), '0x7FFFFFFFFFFFFFFF', 1), 1)) / 10000))) as X("ID", "A", "Price")
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]