|
11.11.2011, 10:32 | #1 |
Участник
|
может лучше в качестве оптимизации сделать нужные индексы, чем делать громоздкий код?
|
|
11.11.2011, 10:46 | #2 |
Участник
|
|
|
11.11.2011, 10:55 | #3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Borsugg (1). |
11.11.2011, 11:50 | #4 |
Участник
|
Цитата:
X++: FromDate fromDate = 05\01\2011; ToDate toDate = 20\02\2011; newPrice minNewPrice = maxInt(); ; while select NewPrice, TransDate from RetailItemPriceHistory order by TransDate desc where RetailItemPriceHistory.ItemId == itemId && RetailItemPriceHistory.InventLocationId == InventLocationId && RetailItemPriceHistory.TransDate <= toDate && RetailItemPriceHistory.NewPrice { minNewPrice = min(minNewPrice, RetailItemPriceHistory.NewPrice); // Сравнение с начальной датой ПОСЛЕ вычисления значения // чтобы учесть цену, указанную ДО начальной даты if (RetailItemPriceHistory.TransDate <= fromDate) { break; } } if (minNewPrice == maxInt()) { // На дату окончания периода нет цены minNewPrice = 0; } X++: FromDate fromDate = 05\01\2011; ToDate toDate = 20\02\2011; ; // Уточняем "начальную дату" select firstonly TransDate from RetailItemPriceHistory order by TransDate desc where RetailItemPriceHistory.ItemId == itemId && RetailItemPriceHistory.InventLocationId == InventLocationId && RetailItemPriceHistory.TransDate <= fromDate && RetailItemPriceHistory.NewPrice; // Если есть запись с датой меньше начальной и нет записи с датой // равной начальной, то начальной датой считаем найденное значение if (RetailItemPriceHistory.TransDate < fromDate) { fromDate = RetailItemPriceHistory.TransDate; } // Теперь собственно запрос select minOf(NewPrice) from RetailItemPriceHistory where RetailItemPriceHistory.ItemId == itemId && RetailItemPriceHistory.InventLocationId == InventLocationId && RetailItemPriceHistory.TransDate >= fromDate && RetailItemPriceHistory.TransDate <= toDate && RetailItemPriceHistory.NewPrice;
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Borsugg (1). |
11.11.2011, 12:14 | #5 |
Участник
|
Цитата:
Цитата:
Спасибо всем за помощь! |
|
13.11.2011, 13:11 | #6 |
Administrator
|
А если так?
X++: FromDate fromDate = 05\01\2011; ToDate toDate = 20\02\2011; ItemId itemId = ...; InventLocationId inventLocationId = ... RetailItemPriceHistory retailItemPriceHistory; RetailItemPriceHistory retailItemPriceHistoryJoin; select minof(NewPrice) from retailItemPriceHistory where retailItemPriceHistory.ItemId == itemId && retailItemPriceHistory.InventLocationId == inventLocationId && retailItemPriceHistory.TransDate <= toDate notexists join retailItemPriceHistoryJoin where retailItemPriceHistoryJoin.ItemId == retailItemPriceHistory.ItemId && retailItemPriceHistoryJoin.InventLocationId == retailItemPriceHistory.InventLocationId && retailItemPriceHistoryJoin.TransDate > retailItemPriceHistory.TransDate && retailItemPriceHistoryJoin.TransDate <= fromDate;
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
Теги |
retailitempricehistory, запрос (query) |
|
Похожие темы | ||||
Тема | Ответов | |||
Поиск набором в выпадающем списке.. | 0 | |||
Поиск сотрудников по наименованию (ФИО) в AX 2009 | 12 | |||
"поиск" | 6 | |||
Поиск по подстроке | 8 | |||
Поиск по полю временной таблицы | 2 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|