|
Помогите, пожалуйста с запросом | ☑ | ||
---|---|---|---|---|
0
discant
16.08.12
✎
00:59
|
Доброго времени суток!
Есть запрос: "ВЫБРАТЬ | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.Количество, | МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость) КАК Стоимость |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ | ПартииТоваровНаСкладах.Период <= &Дата | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, | ПартииТоваровНаСкладах.Количество"; После его выполнения в выборку попадают записи регистра с одинаковым ключем Номенклатура, но разным значением поля Стоимость. Как можно переделать запрос, так, чтобы вместо нескольких строк с одинаковой номенклатурой выбиралась только одна с максимальной ценой для этой номенклатуры? Заранее спасибо. |
|||
1
НикДляЗапросов
16.08.12
✎
01:02
|
А максимум в группировку
|
|||
2
Птица
16.08.12
✎
01:03
|
убрать из группировки поля
ХарактеристикаНоменклатуры, и Количество и в секции Выбрать - тоже убрать эти поля если они таки нужны, добавлять их после выборки макс записи через соединние |
|||
3
discant
16.08.12
✎
01:37
|
Спасибо!
Получилось так: "ВЫБРАТЬ | ПартииТоваровНаСкладах.Номенклатура, | МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость) КАК Стоимость, | ПартииТоваровНаСкладах.Период |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах |ГДЕ | ПартииТоваровНаСкладах.Период <= &Дата | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладах.Номенклатура, | ПартииТоваровНаСкладах.Период"; Что теперь нужно дописать, чтобы в эту выборку попали поля Характеристика номенклатуры и количество? К сожалению, они нужны... |
|||
4
m-serg74
16.08.12
✎
01:45
|
а на фиг ты убрал из выбрать характеристику если она используется)))
|
|||
5
Птица
16.08.12
✎
02:58
|
(3) к получившейся таблице присоединять левым соединением нужные поля из исходной. связь по номенклатуре и количеству, и, возможно, периоду
|
|||
6
Web00001
16.08.12
✎
03:09
|
(5)прикольно, подскажи как делать связь по нескольким полям? Не разу не видел такого фокуса.
|
|||
7
m-serg74
16.08.12
✎
05:54
|
(5)(6) стебаетесь? )))
|
|||
8
SanGvin
16.08.12
✎
06:11
|
щас тут насоветуют....
ВЫБРАТЬ ПартииТоваровНаСкладах.Номенклатура, МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость) КАК Стоимость, ПартииТоваровНаСкладах.Период, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, МАКСИМУМ(ПартииТоваровНаСкладах.Количество) КАК Количество ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ГДЕ ПартииТоваровНаСкладах.Период <= &Дата СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.Период, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры |
|||
9
m-serg74
16.08.12
✎
06:16
|
ну да ты тоже не плохо посоветовал
|
|||
10
SanGvin
16.08.12
✎
06:17
|
я просто изменил творение автора в нужную сторону)
|
|||
11
m-serg74
16.08.12
✎
06:18
|
в ненужную, и (0) в чем логика замуты ибо в Париях стоимость это не Цена, а Сумма и без учета количества в ней понта никакого, вопрос почему МАКСИМУМ(Стоимость)???
|
|||
12
m-serg74
16.08.12
✎
06:19
|
Париях = Партиях
|
|||
13
SanGvin
16.08.12
✎
06:23
|
мдя, отставить хреню спорол)
|
|||
14
SanGvin
16.08.12
✎
06:35
|
хм. ну если автору надо просто самую дорогую партию, то надо выбрать 1 запись из упорядоченной по стоимости выборки, без всяких агрегатных функций.
|
|||
15
m-serg74
16.08.12
✎
06:41
|
>просто самую дорогую партию,
да Стоимость = Цена * Количество!!! И как зная только Стоимость определить дорогая она или дешевая? а) 10р(Цена) * 100шт(Количество) = 1000р(Стоимость ) б) 5р(Цена) * 40шт(Количество) = 200р(Стоимость ) (14) вопрос какая Партия дороже? |
|||
16
discant
16.08.12
✎
06:41
|
(11) В общем, в конечном итоге надо получить для номенклатуры, которая повторяется максимальную цену и работать с ней... А цена получается как Стоимость/Количество.
Вот... |
|||
17
SanGvin
16.08.12
✎
06:41
|
(15) см (16)
Количество-то известно у нас |
|||
18
SanGvin
16.08.12
✎
06:42
|
ВЫБРАТЬ ПЕРВЫЕ 1
ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.Стоимость, ПартииТоваровНаСкладах.Период, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПартииТоваровНаСкладах.Количество, ПартииТоваровНаСкладах.Стоимость / ПартииТоваровНаСкладах.Количество КАК Цена ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ГДЕ ПартииТоваровНаСкладах.Период <= &Дата УПОРЯДОЧИТЬ ПО Цена УБЫВ |
|||
19
m-serg74
16.08.12
✎
06:43
|
(16) наконец то! (17) ты уверен что мне
(18) ты выберешь 1 (единственную) номенклатуру? ))) харе уже глумитьтся |
|||
20
SanGvin
16.08.12
✎
06:49
|
(19) точно... туплю. тогда так! :)
ВЫБРАТЬ ПартииТоваровНаСкладах.Номенклатура, МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость) КАК Стоимость, МАКСИМУМ(ПартииТоваровНаСкладах.Период) КАК Период, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, МАКСИМУМ(ПартииТоваровНаСкладах.Количество) КАК Количество, МАКСИМУМ(ПартииТоваровНаСкладах.Стоимость / ПартииТоваровНаСкладах.Количество) КАК Цена ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ГДЕ ПартииТоваровНаСкладах.Период <= &Дата СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, ПартииТоваровНаСкладах.Номенклатура |
|||
21
m-serg74
16.08.12
✎
06:53
|
|
|||
22
SanGvin
16.08.12
✎
06:56
|
(21) спасибо :)
|
|||
23
m-serg74
16.08.12
✎
06:57
|
наверно ТС скажет)))
|
|||
24
SanGvin
16.08.12
✎
06:57
|
а если надо например еще ссылку на партию:
|
|||
25
m-serg74
16.08.12
✎
07:02
|
тогда из ПартииТоваровНаСкладах Регистратор тянуть и в Группировку его тоже, но тогда для одной Цены может оказаться несколько строк
а главное я тоже что то затупил: (0) а приход/расход - похер? это ж РН может ПартииТоваровНаСкладахОстатки пользовать? |
|||
26
iceman2112
16.08.12
✎
07:40
|
Сначала делаешь таблицу: Период/Номенклатура/МаксЦена. Потом из этого регистра Партий Выбираешь соответсвующие им позиции.
|
|||
27
iceman2112
16.08.12
✎
07:42
|
+ что ты делаешь совершенно не понятно. Тебе наверно нужны Остатки по партиям, а не все движения?
|
|||
28
iceman2112
16.08.12
✎
07:46
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ПартииТоваровНаСкладахОстатки.Номенклатура, МАКСИМУМ(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток) КАК МаксСебестоимость ПОМЕСТИТЬ ВТ_МаксСебестоимость ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстатки СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладахОстатки.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_МаксСебестоимость.Номенклатура ИЗ ВТ_МаксСебестоимость КАК ВТ_МаксСебестоимость ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( &Дата, Номенклатура В (ВЫБРАТЬ МаксСебестоимость.Номенклатура ИЗ ВТ_МаксСебестоимость КАК МаксСебестоимость)) КАК ПартииТоваровНаСкладахОстатки ПО ВТ_МаксСебестоимость.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура |
|||
29
iceman2112
16.08.12
✎
07:46
|
пардон:
ВЫБРАТЬ РАЗЛИЧНЫЕ ПартииТоваровНаСкладахОстатки.Номенклатура, МАКСИМУМ(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток) КАК МаксСебестоимость ПОМЕСТИТЬ ВТ_МаксСебестоимость ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстатки СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладахОстатки.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_МаксСебестоимость.Номенклатура, ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры, ПартииТоваровНаСкладахОстатки.СерияНоменклатуры, ПартииТоваровНаСкладахОстатки.СтатусПартии, ПартииТоваровНаСкладахОстатки.Качество, ПартииТоваровНаСкладахОстатки.Организация ИЗ ВТ_МаксСебестоимость КАК ВТ_МаксСебестоимость ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки( &Дата, Номенклатура В (ВЫБРАТЬ МаксСебестоимость.Номенклатура ИЗ ВТ_МаксСебестоимость КАК МаксСебестоимость)) КАК ПартииТоваровНаСкладахОстатки ПО ВТ_МаксСебестоимость.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура |
|||
30
m-serg74
16.08.12
✎
08:47
|
(26) это в чью сторону? ))) и читай (11) внимательно!!! а именно "в Париях стоимость это не Цена, а Сумма"
|
|||
31
discant
16.08.12
✎
10:15
|
Спасибо всем за помощь! Глупый вопрос... Когда вставляю текст из (29) ругается...
Конструкция выглядит так:
А вот ошибки: {ВнешняяОбработка.ЗаполнениеЦенНоменклатуры.МодульОбъекта(7,34)}: Пропущен символ '"' (двойная кавычка) Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ<<?>> (Проверка: Толстый клиент (обычное приложение)) {ВнешняяОбработка.ЗаполнениеЦенНоменклатуры.МодульОбъекта(7,34)}: Ожидается символ ';' Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ<<?>> (Проверка: Толстый клиент (обычное приложение)) {ВнешняяОбработка.ЗаполнениеЦенНоменклатуры.МодульОбъекта(8,47)}: Неопознанный оператор ПартииТоваровНаСкладахОстатки.Номенклатура<<?>>, (Проверка: Толстый клиент (обычное приложение)) {ВнешняяОбработка.ЗаполнениеЦенНоменклатуры.МодульОбъекта(21,5)}: Неопознанный оператор <<?>>ВТ_МаксСебестоимость.Номенклатура, (Проверка: Толстый клиент (обычное приложение)) |
|||
32
discant
16.08.12
✎
10:28
|
Когда пытаюсь вызвать конструктор пишет: Неоднозначное поле
МаксСебестоимость.Номенклатура |
|||
33
discant
16.08.12
✎
11:25
|
Так и не разобрался...
|
|||
34
discant
16.08.12
✎
12:37
|
K.lb! Yt vjkxbnt gkbp
|
|||
35
Anastasiy
16.08.12
✎
14:21
|
(20) рабочий запрос
|
|||
36
iceman2112
16.08.12
✎
15:07
|
(31) если ошибка в запросе и не можешь понять где, создай сам он же маленький, только учи в запросе (29) комментарий (30)
|
|||
37
m-serg74
16.08.12
✎
15:10
|
он уже завел новую тему и ее уже бросил)))
|
|||
38
iceman2112
16.08.12
✎
15:11
|
и че он там разобрался?
|
|||
39
m-serg74
16.08.12
✎
15:16
|
нет конечно
|
|||
40
m-serg74
16.08.12
✎
15:16
|
он наверное не может определится что ему ваще надо)
|
|||
41
discant
17.08.12
✎
09:29
|
Спасибо... Там просто неоднозначное поле было... Поле Имело тоже имя, что и таблица...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |