|
Помогите переделать запрос | ☑ | ||
---|---|---|---|---|
0
breezee
30.05.15
✎
11:49
|
Есть запрос, который выбирает текущую цену номенклатуру, цена которой изменялась за период, текущую цену и предпоследнюю цену для этой номенклатуры, а потом выводит количество номенклатры. Как его переделать чтобы он вбирал то же самое, только столько же раз сколько регистраторов у него было за период, т.е. если цена за период изменялась 2 раза - нужно выбрать эти 2 документа, вывести номенклатуру для них, даже если она одинаковая, вывести цену на номенклутуру на момент докумнта и предпоследнюю цену. Исходный запрос
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПредыдущаяДата, ЦеныНоменклатурыСрезПоследних.Регистратор, ЦеныНоменклатурыСрезПоследних.Характеристика ПОМЕСТИТЬ втЦеныНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаАктуальнойЦены, ДЕНЬ), ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) И ЦеныНоменклатурыСрезПоследних.Период > ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатурыСрезПоследних.Период >= &ДатаНач СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.Регистратор, ЦеныНоменклатурыСрезПоследних.Характеристика ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втЦеныНоменклатуры.Номенклатура, ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК ЦенаСтарая, втЦеныНоменклатуры.Цена КАК ЦенаНовая, втЦеныНоменклатуры.Цена - ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Разница, втЦеныНоменклатуры.Регистратор, втЦеныНоменклатуры.Характеристика ПОМЕСТИТЬ ВыборкаБезКоличества ИЗ втЦеныНоменклатуры КАК втЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО втЦеныНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура И втЦеныНоменклатуры.ПредыдущаяДата = ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) И втЦеныНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВыборкаБезКоличества.Номенклатура, ВыборкаБезКоличества.ЦенаСтарая, ВыборкаБезКоличества.ЦенаНовая, ВыборкаБезКоличества.Разница, ВыборкаБезКоличества.Регистратор, ВыборкаБезКоличества.Характеристика, ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток ИЗ ВыборкаБезКоличества КАК ВыборкаБезКоличества ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ПО ВыборкаБезКоличества.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ВыборкаБезКоличества.Характеристика = ТоварыНаСкладахОстатки.Характеристика |
|||
1
breezee
30.05.15
✎
11:56
|
(0) Ут 11, забыл написать
|
|||
2
breezee
30.05.15
✎
12:14
|
АП
|
|||
3
breezee
30.05.15
✎
12:52
|
В общем вот у меня выбирается последняя номенклатура и предпоследняя цена для неё в первой аблице и те позиции для которой нужно найти предпоследнюю цену во второй таблице
http://i.imgur.com/WdBdNoC.png |
|||
4
breezee
30.05.15
✎
13:03
|
Получается мне нужно для каждого поля из 2 таблицы полчать остатки, я пытлся сделать это вложенным запросом - не получилось, может подкинете идею, пожалуйста?)
|
|||
5
RomanYS
30.05.15
✎
13:09
|
тебе нужно получать остатки на моменты изменения цены?
По твоим темам мало понятно, что тебе надо и что у тебя не получается. |
|||
6
breezee
30.05.15
✎
13:23
|
(5) Да, но вначле мне нужно на момент изменения цен полчить еще и предыдущую цену на номенклатуру
|
|||
7
breezee
30.05.15
✎
13:37
|
АП!
|
|||
8
RomanYS
30.05.15
✎
13:48
|
(6) если и это у тебя до сих пор не получилось, то вряд ли какие-то советы помогут тебе осилить задачу с остатками.
По остаткам: соединяя таблицу ОстаткиИОбороты саму с собой получить ВТ с периодом изменения остатка. Потом соединить с ценами по Цена.Период между ВТ.Период и ВТ.ПериодИзменения Идея такова |
|||
9
breezee
30.05.15
✎
14:18
|
(8) Я вроде понял - так получим все изменения на каждый преиод в указанном отрзке времени и потом просто добавм туда цены. Но для того чтобы получить цены нужно так же получить все прериоды из физической таблицы(просто запрос к физ. таблицы за период), потом найти максимально приближенное не последние значение - выбираю по финкции МАКСИМУМ(период таблицы физической) - полусются даты таким образом предпоследняя, последняя; предпоследняя, последняя; ...
Потом для каждой даты я выбираю цену - просто свзяь с физической таблицей и таблицей дат и из полученной таблицы я выбираю(вот тут финя полчается)предпоследний период, послдний период и только одно значение из цены, потому что нельзя же установить свзяь таблиц сразу по двум периодам чтобы мне выдавались цены на оба период |
|||
10
Sj
31.05.15
✎
01:14
|
Добавь еще одну такую же таблицу и её соединяй по второму периоду
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |