|
Запрос с ЕСТЬNULL, бд Postrges, Деление на 0 | ☑ | ||
---|---|---|---|---|
0
denya_novichek
29.03.21
✎
17:56
|
Коллеги, база Postgres, ошибка Деление на ноль. Помогите найти, всё что видел обернул в ЕСТЬNULL, всё равно ошибка.
ВЫБРАТЬ ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор КОНЕЦ КАК Регистратор, ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика, ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток, ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК ВНаличииОборот, ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК СуммаВыручкиОборот, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот, 1) КАК ЦенаПродажи, ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот КАК КоличествоОборот1, ВыручкаИСебестоимостьПродажОбороты1.СуммаВыручкиОборот КАК СуммаВыручкиОборот1, ВыручкаИСебестоимостьПродажОбороты1.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот, 1) КАК ЦенаПродажи1, ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот КАК КоличествоОборот2, ВыручкаИСебестоимостьПродажОбороты2.СуммаВыручкиОборот КАК СуммаВыручкиОборот2, ВыручкаИСебестоимостьПродажОбороты2.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот, 1) КАК ЦенаПродажи2, ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот КАК КоличествоОборот3, ВыручкаИСебестоимостьПродажОбороты3.СуммаВыручкиОборот КАК СуммаВыручкиОборот3, ВыручкаИСебестоимостьПродажОбороты3.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот, 1) КАК ЦенаПродажи3, ВЫБОР КОГДА РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) > 0 ТОГДА ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот, 0) / ЕСТЬNULL(РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) * &Расчет, 1) ИНАЧЕ 0 КОНЕЦ КАК КоличествоПотребность, ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот, 0) + ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот, 0) + ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот, 0) / 3 * &Расчет КАК КоличествоПотребностьПоМесяцам, СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток + СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток КАК ВРезерве, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, ЦеныНоменклатурыСрезПоследних.Цена * ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК СуммаОстатка, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул КАК Артикул ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНач, &ДатаКон, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Характеристика = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика И ТоварыНаСкладахОстаткиИОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -1), &ДатаКон, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты1 ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВыручкаИСебестоимостьПродажОбороты1.АналитикаУчетаНоменклатуры.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Характеристика = ВыручкаИСебестоимостьПродажОбороты1.АналитикаУчетаНоменклатуры.Характеристика И ТоварыНаСкладахОстаткиИОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты1.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -2), ДОБАВИТЬКДАТЕ(&ДатаКон, МЕСЯЦ, -1), Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты2 ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВыручкаИСебестоимостьПродажОбороты2.АналитикаУчетаНоменклатуры.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Характеристика = ВыручкаИСебестоимостьПродажОбороты2.АналитикаУчетаНоменклатуры.Характеристика И ТоварыНаСкладахОстаткиИОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты2.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -3), ДОБАВИТЬКДАТЕ(&ДатаКон, МЕСЯЦ, -2), Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты3 ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВыручкаИСебестоимостьПродажОбороты3.АналитикаУчетаНоменклатуры.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Характеристика = ВыручкаИСебестоимостьПродажОбороты3.АналитикаУчетаНоменклатуры.Характеристика И ТоварыНаСкладахОстаткиИОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты3.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаКон {(&ДатаКон)}, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК СвободныеОстаткиОстатки ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = СвободныеОстаткиОстатки.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Склад = СвободныеОстаткиОстатки.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаКон)}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВЫБОР КОГДА ВыручкаИСебестоимостьПродажОбороты.Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL ИНАЧЕ ВыручкаИСебестоимостьПродажОбороты.Регистратор КОНЕЦ, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика, ВыручкаИСебестоимостьПродажОбороты.Склад, 0, 0, 0, ВыручкаИСебестоимостьПродажОбороты.ПериодСекунда, ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот, ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот, 1), ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот, ВыручкаИСебестоимостьПродажОбороты1.СуммаВыручкиОборот, ВыручкаИСебестоимостьПродажОбороты1.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот, 1), ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот, ВыручкаИСебестоимостьПродажОбороты2.СуммаВыручкиОборот, ВыручкаИСебестоимостьПродажОбороты2.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот, 1), ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот, ВыручкаИСебестоимостьПродажОбороты3.СуммаВыручкиОборот, ВыручкаИСебестоимостьПродажОбороты3.СуммаВыручкиОборот / ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот, 1), ВЫБОР КОГДА РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) > 0 ТОГДА ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот, 0) / ЕСТЬNULL(РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) * &Расчет, 1) ИНАЧЕ 0 КОНЕЦ, ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты1.КоличествоОборот, 0) + ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты2.КоличествоОборот, 0) + ЕСТЬNULL(ВыручкаИСебестоимостьПродажОбороты3.КоличествоОборот, 0) / 3 * &Расчет, 0, ЦеныНоменклатурыСрезПоследних.Цена, 0, ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.Артикул ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты( &ДатаНач, &ДатаКон, Авто, НЕ (АналитикаУчетаНоменклатуры.Номенклатура, АналитикаУчетаНоменклатуры.Характеристика, Склад) В (ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.Характеристика КАК Характеристика, ТоварыНаСкладахОстатки.Склад КАК Склад ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки)) КАК ВыручкаИСебестоимостьПродажОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -1), &ДатаКон, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты1 ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ВыручкаИСебестоимостьПродажОбороты1.АналитикаУчетаНоменклатуры.Номенклатура И ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика = ВыручкаИСебестоимостьПродажОбороты1.АналитикаУчетаНоменклатуры.Характеристика И ВыручкаИСебестоимостьПродажОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты1.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -2), ДОБАВИТЬКДАТЕ(&ДатаКон, МЕСЯЦ, -1), Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты2 ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ВыручкаИСебестоимостьПродажОбороты2.АналитикаУчетаНоменклатуры.Номенклатура И ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика = ВыручкаИСебестоимостьПродажОбороты2.АналитикаУчетаНоменклатуры.Характеристика И ВыручкаИСебестоимостьПродажОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты2.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, -3), ДОБАВИТЬКДАТЕ(&ДатаКон, МЕСЯЦ, -2), Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты3 ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ВыручкаИСебестоимостьПродажОбороты3.АналитикаУчетаНоменклатуры.Номенклатура И ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика = ВыручкаИСебестоимостьПродажОбороты3.АналитикаУчетаНоменклатуры.Характеристика И ВыручкаИСебестоимостьПродажОбороты.Склад = ВыручкаИСебестоимостьПродажОбороты3.Склад ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаКон)}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |
|||
1
Вафель
29.03.21
✎
17:59
|
количество оборот может равняться 0
|
|||
2
conscious
29.03.21
✎
18:01
|
В данных может быть не NULL, а 0.
Вот это вот вообще для чего: ЕСТЬNULL(РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) * &Расчет, 1)? Для чего тут проверка на ЕСТЬNULL? |
|||
3
Fragster
гуру
29.03.21
✎
18:06
|
нужно больше естьNULL
|
|||
4
denya_novichek
29.03.21
✎
18:10
|
(1) Огромное спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |