|
Проблема с запросом | ☑ | ||
---|---|---|---|---|
0
jamesgold
28.04.15
✎
09:40
|
Добрый день, прошу помочь!
Имеется две таблицы: Регистр накопленния и табличная часть документа. Примерно выглядит так, скрин: http://s018.radikal.ru/i523/1504/26/67abc859a88e.jpg Необходимо в итоговой таблице к номенклатуре с количеством подставлять цену с самой поздней датой из табличной части документа Написал такой запрос, скажите в чем ошибка: ВЫБРАТЬ ОстаткиИнструментовИРасходниковОстаткиИОбороты.Организация, ОстаткиИнструментовИРасходниковОстаткиИОбороты.Номенклатура, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоНачальныйОстаток, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоПриход, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоРасход, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоКонечныйОстаток, ВложенныйЗапрос.Цена ИЗ РегистрНакопления.ОстаткиИнструментовИРасходников.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ) КАК ОстаткиИнструментовИРасходниковОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.НоменклатураЗаказа КАК НоменклатураЗаказа, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары УПОРЯДОЧИТЬ ПО Дата УБЫВ) КАК ВложенныйЗапрос ПО ОстаткиИнструментовИРасходниковОстаткиИОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура ГДЕ ОстаткиИнструментовИРасходниковОстаткиИОбороты.Организация = &Организация Скрин: http://s018.radikal.ru/i517/1504/69/ff08d06776a4.jpg |
|||
1
jsmith82
28.04.15
✎
09:43
|
ну, тут надо писать вложенный запрос с максимум
а вообще лучше запили регистр сведений, который заполняется при проведении документа |
|||
2
jamesgold
28.04.15
✎
09:45
|
Поподробней можно насчет максимум?
|
|||
3
zak555
28.04.15
✎
09:45
|
> Необходимо в итоговой таблице к номенклатуре с количеством подставлять цену с самой поздней датой из табличной части документа
клеит движения рн с тч по регистратору, номенклатуре и количеству отсюда достаём цену |
|||
4
Drac0
28.04.15
✎
09:52
|
(1) +1
|
|||
5
jamesgold
28.04.15
✎
09:56
|
Как это будет примерно выглядеть с максумум? Можно схематично набросать?
|
|||
6
zak555
28.04.15
✎
09:58
|
(5) ты лучше определись -- может ли быть в одном документе прихода две одинаковые строки в количественном выражении, но с разной ценной ?
если нет -- делай 3 -- без всяких там вложенных запросов |
|||
7
jsmith82
28.04.15
✎
09:59
|
||||
8
jamesgold
28.04.15
✎
11:27
|
Переписал запрос с функцией максимум:
ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена Скрин: http://s017.radikal.ru/i442/1504/d1/d80f3ff93f34.jpg Подскажите, что допилить в запросе, чтобы получалась одна строчка где дата максимальная? |
|||
9
jsmith82
28.04.15
✎
11:36
|
цену убери, потом левое с ТЧ по дата и номенклатура, там цену выдернешь
|
|||
10
jamesgold
28.04.15
✎
12:22
|
(9) В итоге получился следующий запрос:
ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ВложенныйЗапрос.Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары) КАК ВложенныйЗапрос ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура = ВложенныйЗапрос.Номенклатура И ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата = ВложенныйЗапрос.Дата ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура, ВложенныйЗапрос.Цена Но результат тотже, теже 3 строки |
|||
11
anaed
28.04.15
✎
12:41
|
Но в (7) же ссылка...
Проблема в том, что для каждого сочетания номенклатура+цена Дата максимальна, а вам нужен максимум только для номенклатуры. 1) Загоняете выборку со всеми сочетаниями номенклатура-цена-дата в 1ую временную таблицу. 2) Во 2ую временную таблицу выбираете записи с максимальными датами из 1ой таблицу группируя только по номенклатуре. Таким образом получаете табличку в которой для каждой номенклатуры указана последняя дата. Теперь нужно из 1 таблицы отобрать нужные записи, для этого: 3) Внутреннем соединением соединяете 1 и 2 таблицу по номенклатуре и датам. Ваши "исправленные" запросы ерунда какая-то. В первую временную таблицу попробуйте поместить выборку из (0), только уберите во вложенном запросе упорядочивание и "первые", чтобы все даты получить. |
|||
12
jamesgold
28.04.15
✎
12:52
|
Спасибо за развернутый ответ, сейчас попробую и обязательно отпишусь (11)
|
|||
13
jsmith82
28.04.15
✎
13:06
|
(10) я сказал цену убрать
|
|||
14
jsmith82
28.04.15
✎
13:06
|
а, сорри
|
|||
15
jamesgold
28.04.15
✎
15:32
|
(11) Большое спасибо, все получилось!
Вот итоговый правильный запрос: ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_НомПоследняяДата ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ПОМЕСТИТЬ ВТ_Общий_ДатаНоменклатураЦена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НомПоследняяДата.Номенклатура, ВТ_НомПоследняяДата.Дата, ВТ_Общий_ДатаНоменклатураЦена.Цена ИЗ ВТ_НомПоследняяДата КАК ВТ_НомПоследняяДата ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Общий_ДатаНоменклатураЦена КАК ВТ_Общий_ДатаНоменклатураЦена ПО ВТ_НомПоследняяДата.Дата = ВТ_Общий_ДатаНоменклатураЦена.Дата И ВТ_НомПоследняяДата.Номенклатура = ВТ_Общий_ДатаНоменклатураЦена.Номенклатура |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |