Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
mnbvcx Member Откуда: Сообщений: 265 |
Написал простой селект, в котором, в частности,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. Что делать? |
20 июн 19, 11:47 [21912093] Ответить | Цитировать Сообщить модератору |
Badger Member Откуда: Москва Сообщений: 238 |
mnbvcx, Convert (Decimal (20,10), sum(case when T.ID = 2 then d.A * D.Price else 0 end)) Думаю это вам поможет |
20 июн 19, 12:06 [21912115] Ответить | Цитировать Сообщить модератору |
mnbvcx Member Откуда: Сообщений: 265 |
к сожалению, не помогло - та же ошибка( В итоге сделал так sum(case when T.ID = 2 then d.A * cast(D.Price as float) else 0 end) но это, наверное, не очень хорошо - копейки какие-нибудь могут исказиться? |
||
20 июн 19, 15:21 [21912299] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37138 |
Надо не к float конвертить, а к decimal, чтобы результирующее значение влезло в результрующую точночть: https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/precision-scale-and-length-transact-sql?view=sql-server-2017
Сообщение было отредактировано: 20 июн 19, 15:30 |
20 июн 19, 15:30 [21912302] Ответить | Цитировать Сообщить модератору |
nullin Member Откуда: pullin Сообщений: 174 |
decimal(35, 10)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") |
20 июн 19, 16:50 [21912371] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |