AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2011, 10:16   #12  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Теоретически может так оказаться, что вторая часть запроса не найдёт не одной записи (например период в которм ищем минимальную цену насчинается раньше чем первая запись о цене). И тогда джойн не вернёт ничего.
да, такое возможно... я думаю что можно это будет учесть. в начале выбрать с помощью джойна, если там ничего не нашлось, тогда получается что достаточно сделать один запрос с указанием периода. он и найдет минимальную цену. Т.е. в итоге метод получится что то типа:
X++:
....
Price    returnPrice;
;

select firstonly NewPrice from RetailItemPriceHistory
    order by NewPrice
    where  RetailItemPriceHistory.ItemId            ==  itemId
          && RetailItemPriceHistory.InventLocationId  ==  InventLocationId
          && RetailItemPriceHistory.TransDate         >=  "05.01.2011"
          && RetailItemPriceHistory.TransDate         <=  "20.02.2011"
          && RetailItemPriceHistory.NewPrice
join firstonly NewPrice from RetailItemPriceHistory2
    order by TransDate desc
    where  RetailItemPriceHistory2.ItemId                ==  RetailItemPriceHistory.ItemId
          && RetailItemPriceHistory2.InventLocationId  ==  RetailItemPriceHistory.InventLocationId
          && RetailItemPriceHistory2.TransDate           <    "05.01.2011";

if (RetailItemPriceHistory.RecId != 0)
    returnPrice = min(RetailItemPriceHistory.NewPrice, RetailItemPriceHistory2.NewPrice);
else
{
    select minOf(NewPrice) from RetailItemPriceHistory
                                where  RetailItemPriceHistory.ItemId            ==  itemId
                                    && RetailItemPriceHistory.InventLocationId  ==  InventLocationId
                                    && RetailItemPriceHistory.TransDate         >=  "05.01.2011"
                                    && RetailItemPriceHistory.TransDate         <=  "20.02.2011"
                                    && RetailItemPriceHistory.NewPrice;   

    returnPrice = RetailItemPriceHistory.NewPrice;
}

return returnPrice;
P.S. в общем конечно этот вариант надо обдумывать с тестированием (гонять на разных вариантах), тогда в итоге можно получить наиболее сбалансированный результат
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: Borsugg (1).
Теги
retailitempricehistory, запрос (query)

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поиск набором в выпадающем списке.. propeller DAX: Программирование 0 04.04.2011 17:31
Поиск сотрудников по наименованию (ФИО) в AX 2009 propeller DAX: Программирование 12 15.11.2010 12:42
"поиск" braathe DAX: Программирование 6 24.03.2006 13:07
Поиск по подстроке JohNick DAX: Программирование 8 06.03.2004 22:24
Поиск по полю временной таблицы Swetik DAX: Программирование 2 10.12.2003 11:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:13.