0
slafor
09.12.22
✎
00:01
|
Есть большой запрос, где много временных таблиц. В одном месте запроса я соединяю одну таблицу с двумя другими левым соединением. В обеих таблицах можно нарваться на значения типа NULL, поэтому поле у меня пишется так:
ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) > ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
ТОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) -
ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
ИНАЧЕ 0 КОНЕЦ КАК Остаток
Пишет ошибку "Неверные параметры "-"".
Меняю этот код на совсем уж "извращенный":
ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) >
ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0)
ТОГДА (ВЫБОР КОГДА ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток ЕСТЬ NULL
ТОГДА 0 ИНАЧЕ ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток КОНЕЦ)
- (ВЫБОР КОГДА ДополнительныеРеквизитыМинимальныйОстаток.Значение ЕСТЬ NULL
ТОГДА 0 ИНАЧЕ ДополнительныеРеквизитыМинимальныйОстаток.Значение КОНЕЦ)
ИНАЧЕ 0 КОНЕЦ КАК Остаток
но ошибка такая же.
Почему у меня не получается вычесть одно поле (число, а если NULL, то 0) из другого (тоже число)?
|
|
2
slafor
09.12.22
✎
00:10
|
(1) Уже нашел в инете, но все равно огромное спасибо!
ВЫРАЗИТЬ(ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) КАК ЧИСЛО(15,2)) - ВЫРАЗИТЬ(ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0) КАК ЧИСЛО(15,2)) -
это РАБОТАЕТ!!!
Но что интересно, почему же он тогда не выдает ошибку на сравнении:
ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаСвободныеОстатки.КоличествоОстаток, 0) > ЕСТЬNULL(ДополнительныеРеквизитыМинимальныйОстаток.Значение, 0) ?
Ведь сравнивать тоже можно только числа?
|
|