powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Деление на ноль, как избавиться?
9 сообщений из 9, страница 1 из 1
Деление на ноль, как избавиться?
    #39677550
Edward Mingaziev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой проблемой: во вложенном запросе возвращается таблица, в которую не должны попадать записи, имеющие значение ноль в одном из столбцов. В верхнем запросе имеется формула с делением на это поле. Но ошибка деления на ноль все равно возникает. Вот сам запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table #test (tovar int, kol numeric(18,3), cenazak numeric(18,2), cenaprod numeric(18,2))
insert into #test values(1,1,0.02, 0.02)
insert into #test values(2,1,0, 0)

select *
from 
	(select tovar, sum(kol*cenazak) summazak, sum(kol*cenaprod) summaprod
	from #test
	group by tovar
	having sum(kol*cenazak)<>0) z
where (summaprod-summazak)/summazak<0.3


Есть конечно вариант с использованием CASE в условии, но при этом варианте запрос выполняется уж очень долго.
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677553
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edward Mingaziev,

если не хотите резать условием,
Код: sql
1.
NULLIF(summazak,0)
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677560
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
where summaprod - summazak < 0.3 * summazak
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677561
Edward Mingaziev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKEdward Mingaziev,

если не хотите резать условием,
Код: sql
1.
NULLIF(summazak,0)



Спасибо, действительно помогло. Но не понимаю как.
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677566
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edward MingazievTaPaKEdward Mingaziev,

если не хотите резать условием,
Код: sql
1.
NULLIF(summazak,0)



Спасибо, действительно помогло. Но не понимаю как.
summazak = 0 заменяется на NULL, на NULL делить можно.

Или как invm предлагает, вполне математичненько :)
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677587
Edward Mingaziev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но ведь нулевые значения должны были отфильтроваться еще во вложенном запросе. А они почему-то подвергаются проверке в основном запросе.
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677588
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edward MingazievНо ведь нулевые значения должны были отфильтроваться еще во вложенном запросе. А они почему-то подвергаются проверке в основном запросе.
никому они не должны. Смотрите в план
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677602
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Код: sql
1.
where summaprod - summazak < 0.3 * summazak

Код: sql
1.
where summaprod < 1.3 * summazak
...
Рейтинг: 0 / 0
Деление на ноль, как избавиться?
    #39677670
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapinvm
Код: sql
1.
where summaprod - summazak < 0.3 * summazak

Код: sql
1.
where summaprod < 1.3 * summazak


Ну не учил человек высшей математики.
Чо докапываться?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Деление на ноль, как избавиться?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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