Вход | Регистрация


Как правильно работать с NULL при возврате МАКСИМУМ

Как правильно работать с NULL при возврате МАКСИМУМ
Я
   slitov
 
26.09.17 - 15:50
Добрый день коллеги, тут параллельно готовлюсь к сертификации на спеца, по основной работе необходимо написать функцию, которая возвращает либо число, либо 0. Но если в запросе использовать МАКСИМУМ, тогда ЕСТЬNULL(..., ...) не отрабатывает. Как правильно обработать данные в таком запросе:
ВЫБРАТЬ
    МАКСИМУМ(ЕСТЬNULL(яШтрихКодыПаллет.НомерПаллеты, 0)) КАК НомерПаллеты
ИЗ
    Справочник.яШтрихКодыПаллет КАК яШтрихКодыПаллет
ГДЕ
    яШтрихКодыПаллет.Дата = &Дата
    И яШтрихКодыПаллет.НомерСмены = &НомерСмены
    И яШтрихКодыПаллет.Владелец = &Владелец


1. Положить запрос во временную таблицу и во втором запросе проверить на NULL
2. Или далее в условии если произвести сравнение ВыборкаДетальныеЗаписи.НомерПаллеты = NULL (проверил, возвращает истину)

Насколько я знаю, NULL нельзя сравнивать. Подскажите как лучше поступить, вдруг на экзамене придется делать такой запрос.
 
 
   Ёпрст
 
1 - 26.09.17 - 15:53
(0) дык, там null-а никогда не будет. Какой смысл пихать туда ЕстьNULL ?
   slitov
 
2 - 26.09.17 - 15:54
(1) Ну эт понятно, как правильно тогда выполнить то?
   Ёпрст
 
3 - 26.09.17 - 15:56
(2) НомерПаллеты, тип Число ? Составной тип ?
   Ёпрст
 
4 - 26.09.17 - 15:57
если число, то просто Максимум(НомерПаллеты) как НомерПаллеты.
усё
   slitov
 
5 - 26.09.17 - 15:57
Номер это число
   Филиал-msk
 
6 - 26.09.17 - 15:58
(1) Будет, если выборка пустая
   Филиал-msk
 
7 - 26.09.17 - 15:58
В смысле вся колонка, не аргумент максимума
   slitov
 
8 - 26.09.17 - 15:59
(4) Долее мне надо вернуть значение 0 из функции, как правильно обработать результат? Не раз слышал, что NULL сравнивать нельзя.
   Ёпрст
 
9 - 26.09.17 - 16:00
(8)
Выборка = Запрос.Выполнить().Выбрать():
Если Выборка.Следующий() Возврат Выборка.НомерПалетты;КонецЕсли;
Возврат 0;
   slitov
 
10 - 26.09.17 - 16:03
(6) Нифига вот что имею:
РезультатЗапроса.Пустой()    Ложь    Булево
(9) Так в выборке есть одно значение, которое NULL, тогда выборка NULL и вернет (((
 
 Рекламное место пустует
   Ёпрст
 
11 - 26.09.17 - 16:05
(10)
да ё
Возврат ?(ЗначениеЗаполнено(Выборка.НомерПалетты,Выборка.НомерПалетты,0);
   Филиал-msk
 
12 - 26.09.17 - 16:06
(10) ЕСТЬNULL(МАКСИМУМ(яШтрихКодыПаллет.НомерПаллеты), 0)
   Филиал-msk
 
13 - 26.09.17 - 16:07
У тебя под условия отбора не попадает ни одна строка, поэтому максимум на пустой выборке возвращает тебе null
   mehfk
 
14 - 26.09.17 - 16:11
(0) Убери агрегатную функцию и сделай упорядочить по НомерПаллеты убыв
   mehfk
 
15 - 26.09.17 - 16:12
+ первые 1
   slitov
 
16 - 26.09.17 - 16:16
(11) Спасибо, мне кажется так правильней всего.
(12) Хотя и этот вариант рабочий
(14) И это тоже хороший вариант
Совсем запутался, какой вариант из всех оптимальнее )))
   Cyberhawk
 
17 - 26.09.17 - 16:27
+(12)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует