Найти максимальную дату установки цены по номеклатуре где цена больше нуля

1. tiger12 1 20.02.21 19:30 Сейчас в теме
Запросом получаются данные по нескольким типам цен.

По некоторому типу цен цена может быть равна нулю.

Надо брать цену по другому типу цен, если цена оказывается равна нулю.

В коде добавил комментарий //получить цену по ТипуЦенРозница


ВЫБРАТЬ
	ВТ_ЦеныСегодня.Номенклатура.Код КАК Код,
	ВТ_ЦеныСегодня.Номенклатура КАК Номенклатура,
	ВТ_ЦеныСегодня.Цена КАК Цена,
	ВТ_ЦеныСегодня.ТипЦен КАК ТипЦен,
	
	ВЫБОР
		КОГДА ВТ_ЦеныВчера.Цена = 0
			ТОГДА   //получить цену по ТипуЦенРозница
		ИНАЧЕ  ВТ_ЦеныВчера.Цена
	КОНЕЦ КАК  ЦенаБыла
ИЗ
	ВТ_ЦеныСегодня КАК ВТ_ЦеныСегодня
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныВчера КАК ВТ_ЦеныВчера
		ПО ВТ_ЦеныСегодня.Номенклатура = ВТ_ЦеныВчера.Номенклатура
			И ВТ_ЦеныСегодня.ТипЦен = ВТ_ЦеныВчера.ТипЦен
Показать
Вознаграждение за ответ
Показать полностью
Найденные решения
2. Sergex 58 21.02.21 02:41 Сейчас в теме +0.5 $m
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.

У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?

Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:

    ВЫБОР
        КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
            ТОГДА   <подставляем цену второго вида>
        ИНАЧЕ  ВТ_ЦеныВчера.Цена
    КОНЕЦ КАК  ЦенаБыла  
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sergex 58 21.02.21 02:41 Сейчас в теме +0.5 $m
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.

У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?

Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:

    ВЫБОР
        КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
            ТОГДА   <подставляем цену второго вида>
        ИНАЧЕ  ВТ_ЦеныВчера.Цена
    КОНЕЦ КАК  ЦенаБыла  
3. tiger12 1 21.02.21 10:24 Сейчас в теме
(2)


стало понятнее, спасибо. цену по конкретному типу цены найду
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот