Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сложение больших чисел  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Всем привет. Столкнулся с такой сложностью - в запросе используется Sum для большого числа, выдаётся ошибка arithmetic overflow error converting expression to data type bigint.
Вопрос - как малой кровью обойти ограничение размерности значений для Sum? (не хочется утяжелять логику запроса явным сложением значений).
Заранее спасибо.
4 май 16, 11:03    [19132472]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
FBuilder
для большого числа

Это такой тип данных "большое число" ?

FBuilder
Вопрос - как малой кровью обойти ограничение размерности значений для Sum?

Максимальные/минимальные значения для всех типов данных указаные в хелпе. Изменить их не получится
4 май 16, 11:07    [19132492]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
o-o
Guest
cast as decimal(38,0) слагаемым
4 май 16, 11:12    [19132516]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Glory, bigint множится на int, в результате получается 20-ти значное число, что вылетает за bigint. Мне как надо было это назвать?
Надеялся, вдруг есть какая-то альтернатива Sum.
4 май 16, 11:12    [19132519]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
o-o
Guest
declare @b bigint = 9223372036854775807, -- max value
        @i int = 10;
select cast(@b as decimal(38,0)) * @i
----------
92233720368547758070
4 май 16, 11:15    [19132533]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
FBuilder
Member

Откуда:
Сообщений: 29
o-o, не помогло, ошибка осталось без изменений. Хотя это странно, должно было помочь и плохо, что я об этом сам не подумал.
4 май 16, 11:18    [19132545]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
FBuilder
не помогло, ошибка осталось без изменений.

Если ничего не исправлять, то ничего и не изменится

declare @t table(f1 bigint, f2 int)
insert @t values(9223372036854775807, 10)
select sum(f1*f2) from @t
go

declare @t table(f1 bigint, f2 int)
insert @t values(9223372036854775807, 10)
select sum(cast(f1 as numeric(38,0))*f2) from @t
4 май 16, 11:21    [19132566]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Glory, я попробовал. Однако, последовал совету о-о буквально, т.е.

declare @t table(f1 bigint, f2 int)
insert @t values(9223372036854775807, 10)
select sum(cast((f1*f2) as numeric(38,0))) from @t

А зря. Следуя Вашей инструкции, заработало. Спасибо.
4 май 16, 11:30    [19132598]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
Glory
Member

Откуда:
Сообщений: 104760
FBuilder
Однако, последовал совету о-о буквально, т.е.

вы как раз последовали небуквально
cast(f1)*f2 не тоже самое, что cast(f1*f2)
4 май 16, 11:31    [19132607]     Ответить | Цитировать Сообщить модератору
 Re: Сложение больших чисел  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Glory, в любом случае, спасибо, всё заработало.
4 май 16, 11:52    [19132744]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить