Найти максимальную дату установки цены по номеклатуре где цена больше нуля
Запросом получаются данные по нескольким типам цен.
По некоторому типу цен цена может быть равна нулю.
Надо брать цену по другому типу цен, если цена оказывается равна нулю.
В коде добавил комментарий //получить цену по ТипуЦенРозница
По некоторому типу цен цена может быть равна нулю.
Надо брать цену по другому типу цен, если цена оказывается равна нулю.
В коде добавил комментарий //получить цену по ТипуЦенРозница
ВЫБРАТЬ
ВТ_ЦеныСегодня.Номенклатура.Код КАК Код,
ВТ_ЦеныСегодня.Номенклатура КАК Номенклатура,
ВТ_ЦеныСегодня.Цена КАК Цена,
ВТ_ЦеныСегодня.ТипЦен КАК ТипЦен,
ВЫБОР
КОГДА ВТ_ЦеныВчера.Цена = 0
ТОГДА //получить цену по ТипуЦенРозница
ИНАЧЕ ВТ_ЦеныВчера.Цена
КОНЕЦ КАК ЦенаБыла
ИЗ
ВТ_ЦеныСегодня КАК ВТ_ЦеныСегодня
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныВчера КАК ВТ_ЦеныВчера
ПО ВТ_ЦеныСегодня.Номенклатура = ВТ_ЦеныВчера.Номенклатура
И ВТ_ЦеныСегодня.ТипЦен = ВТ_ЦеныВчера.ТипЦен
ПоказатьНайденные решения
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.
У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?
Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:
У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?
Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:
ВЫБОР
КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
ТОГДА <подставляем цену второго вида>
ИНАЧЕ ВТ_ЦеныВчера.Цена
КОНЕЦ КАК ЦенаБыла
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.
У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?
Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:
У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?
Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:
ВЫБОР
КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
ТОГДА <подставляем цену второго вида>
ИНАЧЕ ВТ_ЦеныВчера.Цена
КОНЕЦ КАК ЦенаБыла
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот