|
Ошибка переполнения в запросе
| ☑ |
0
Momus
19.08.22
✎
10:52
|
Есть три временные таблицы. В итоговом запросе выражение:
ПартииМатериалов.МатериальныеУпр
* НЗППоПродукции.Количество / ВыбытиеСводно.Количество
* НЗППоПродукции.Числитель
/ НЗППоПродукции.Знаменатель
что соответствует
503500*159/159*3517610/3517610
Числа вроде небольшие, если даже убрать деление из выражения (15 знаков). Запрос "Выбрать 503500*159/159*3517610/3517610" нормально отрабатывает. Что не так?
|
|
1
Momus
19.08.22
✎
10:56
|
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
|
|
2
6awkup_true
19.08.22
✎
10:57
|
а вы уверены, что у вас переполнение именно тут? может у вас в вт супер вложенность "выбор когда выбор когда"? или скуль старый и происходит превышение на 256 таблиц в плане? составные типы приведены?
|
|
3
VS-1976
19.08.22
✎
10:57
|
Скорее всего результат впихивается в меньший объем, посмотрите куда данные помещаются
|
|
4
VS-1976
19.08.22
✎
10:58
|
Можно самому указать через выразить разрядность
|
|
5
Momus
19.08.22
✎
11:04
|
(2) уверен. Я из большого запроса постепенно исключал строки. В конце написал
Выбрать Первые 1
...
ПартииМатериалов.МатериальныеУпр как п1,
НЗППоПродукции.Количество как п2,
ВыбытиеСводно.Количество как п3,
НЗППоПродукции.Числитель как п4,
НЗППоПродукции.Знаменатель как п5
Поместить ВТ;
Выбрать
п1 * п2 / п3 * п4 / п5 ;
Все равно ошибка
|
|
6
Momus
19.08.22
✎
11:04
|
(4) Выбрать
Выразить( п1 * п2 / п3 * п4 / п5 КАК Число(30,2)) ;
Ошибка
|
|
7
timurhv
19.08.22
✎
11:05
|
(6) п1...п2 через выразить
|
|
8
Momus
19.08.22
✎
11:09
|
(7) так работает. А другой вариант есть? Это типовой отчет фактической себестоимости продукции, не хотелось бы его править
|
|