|
МАКСИМУМ в запросе | ☑ | ||
---|---|---|---|---|
0
lakich
07.04.17
✎
15:21
|
Добрый день,...имеется простой запрос
ВЫБРАТЬ МАКСИМУМ(ПИК_КоэффСегмДляЗП.Период) КАК Период, ПИК_КоэффСегмДляЗП.Сегмент ПОМЕСТИТЬ ТМАКСП ИЗ РегистрСведений.ПИК_КоэффСегмДляЗП КАК ПИК_КоэффСегмДляЗП СГРУППИРОВАТЬ ПО ПИК_КоэффСегмДляЗП.Сегмент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура, МАКСИМУМ(ТМАКСП.Период) КАК Период, ТМАКСП.Сегмент КАК Сегмент ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТМАКСП КАК ТМАКСП ПО НоменклатураСегмента.Сегмент = ТМАКСП.Сегмент СГРУППИРОВАТЬ ПО ТМАКСП.Сегмент, НоменклатураСегмента.Номенклатура По идее должен получать записи Номенклатура,Период,Сегмент без повторений Номенклатуры с максимальным Периодом..однако выдает все записи по данной номенклатуре ..в чем не прав? |
|||
1
Вафель
07.04.17
✎
15:22
|
все пары номенклатура+сегмент выдаст
|
|||
2
lakich
07.04.17
✎
15:23
|
(1) так и выдает..а как получить только одну запись с макс периодом?
|
|||
3
AlexGaren
07.04.17
✎
15:24
|
Почему не СрезПоследних,если тебе период именно нужен.
|
|||
4
lakich
07.04.17
✎
15:25
|
(3) пробывал и с СрезПоследних у РегистрСведений.ПИК_КоэффСегмДляЗП...все равно дублирует
|
|||
5
azernot
07.04.17
✎
15:26
|
Без понимания структуры регистра НоменклатураСегмента ничего не понятно.
Группировка по втором запросе бессмысленна. Там уже для каждого сегмента самая последняя дата. |
|||
6
ИУБиПовиц
07.04.17
✎
15:27
|
Во выборке не максимум, а просто период, и в связь по периоду сделайте. должно помочь
|
|||
7
AlexGaren
07.04.17
✎
15:28
|
Быть этого не может,значит у тебя сегменты,может по наименованию выглядит одинаково на на деле разные.
|
|||
8
lakich
07.04.17
✎
15:28
|
(5) там два измерения Сегмент и Номенклатура и все..непериодический с..ук
|
|||
9
azernot
07.04.17
✎
15:29
|
В первой таблице
Сегмент1 31.12.2017 Сегмент2 30.11.2017 Во втором запросе должно быть что-то типа Номенклатура1 Сегмент1 31.12.2017 Номенклатура2 Сегмент1 31.12.2017 Номенклатура3 Сегмент2 30.11.2017 Номенклатура4 Сегмент2 30.11.2017 А что ожидается? |
|||
10
Вафель
07.04.17
✎
15:29
|
(2) нужно для каждой номенклатуры найти макс период и потом уже по ном+период искать сегмент
|
|||
11
AlexGaren
07.04.17
✎
15:32
|
Стоп,а зачем делать Непериодический регистр сведений с имзерением Период?
Это что за демон?)))) |
|||
12
lakich
07.04.17
✎
15:33
|
(9) а получается,вернее выдает
Номенклатура1 Сегмент1 31.12.2015 Номенклатура2 Сегмент2 31.12.2016 Номенклатура2 Сегмент3 30.11.2017 |
|||
13
lakich
07.04.17
✎
15:33
|
(11) это оф.франчи ваяли,мне отчет нужно сделать..хотел сам ругаться,да тут фильтр стоит))
|
|||
14
azernot
07.04.17
✎
15:34
|
ВЫБРАТЬ
МАКСИМУМ(ПИК_КоэффСегмДляЗП.Период) КАК Период ПОМЕСТИТЬ ТМАКСП ИЗ РегистрСведений.ПИК_КоэффСегмДляЗП КАК ПИК_КоэффСегмДляЗП ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура, ПИК_КоэффСегмДляЗП.Период КАК Период, ПИК_КоэффСегмДляЗП.Сегмент КАК Сегмент ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПИК_КоэффСегмДляЗП КАК ПИК_КоэффСегмДляЗП ПО НоменклатураСегмента.Сегмент = ПИК_КоэффСегмДляЗП.Сегмент ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТМАКСП КАК ТМАКСП ПО ПИК_КоэффСегмДляЗП.Период= ТМАКСП.Период |
|||
15
azernot
07.04.17
✎
15:34
|
(12) Всё правильно выдаёт.
Повторяю, а что ожидается? |
|||
16
lakich
07.04.17
✎
15:36
|
ожидается
Номенклатура1 Сегмент1 31.12.2017 Номенклатура2 Сегмент2 31.12.2017 Номенклатура3 Сегмент2 30.11.2017 Номенклатура4 Сегмент4 30.11.2017 |
|||
17
azernot
07.04.17
✎
15:37
|
А если Номенклатура2 связана ещё и с сегментом2, то что?
Нужно чтобы отбирались только последние сегменты для каждой номенклатуры, что ли? |
|||
18
azernot
07.04.17
✎
15:38
|
+(17) А если Номенклатура2 связана ещё и с сегментом3, то что?
|
|||
19
lakich
07.04.17
✎
15:38
|
(17) да,Сегменты с максимальной датой нужны..
|
|||
20
1dvd
07.04.17
✎
15:39
|
+ если по одной номенклатуре за одну дату 2 разных сегмента. Какой брать?
|
|||
21
lakich
07.04.17
✎
15:40
|
то есть Ном входит в сегмент,вводили ее туда весной,потом в другой сегмент летом,в слетующий зимой..так вот нужен сегмент с зимней датой
|
|||
22
PCcomCat
07.04.17
✎
15:45
|
(0) Скидываю кусок запроса - почитай. Если не разберешься - пиши.
Текст: ВЫБРАТЬ РАЗЛИЧНЫЕ СписокЗатрат.Затрата, ЗначенияСвойствОбъектов_Резерв.Значение КАК СкладскойРезерв, ЗначенияСвойствОбъектов_УпаковкаПоставщика.Значение КАК УпаковкаПоставщика, ЦеныНоменклатурыКонтрагентов.Цена, ЦеныНоменклатурыКонтрагентов.Регистратор, ЦеныНоменклатурыКонтрагентов.Регистратор.Контрагент, ЦеныНоменклатурыКонтрагентов.Регистратор.Дата, ЦеныНоменклатурыКонтрагентовДопЦена1.Цена КАК ДопЦена2, ЦеныНоменклатурыКонтрагентовДопЦена2.Цена КАК ДопЦена1 ПОМЕСТИТЬ РезервЦенаУпаковка ИЗ СписокЗатрат КАК СписокЗатрат ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_Резерв ПО СписокЗатрат.Затрата = ЗначенияСвойствОбъектов_Резерв.Объект И (ЗначенияСвойствОбъектов_Резерв.Свойство = &СвойствоРезерв) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ПО СписокЗатрат.Затрата = ЦеныНоменклатурыКонтрагентов.Номенклатура И (ЦеныНоменклатурыКонтрагентов.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 1 ЦеныНоменклатурыКонтрагентов.Регистратор ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ГДЕ ЦеныНоменклатурыКонтрагентов.Номенклатура = СписокЗатрат.Затрата И ЦеныНоменклатурыКонтрагентов.ТипЦен.ТипЦеныНоменклатуры = &ТипЦен УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыКонтрагентов.Регистратор.Дата УБЫВ)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов_УпаковкаПоставщика ПО СписокЗатрат.Затрата = ЗначенияСвойствОбъектов_УпаковкаПоставщика.Объект И (ЗначенияСвойствОбъектов_УпаковкаПоставщика.Свойство = &СвойствоУпаковкаПоставщика) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентовДопЦена1 ПО СписокЗатрат.Затрата = ЦеныНоменклатурыКонтрагентовДопЦена1.Номенклатура И (ЦеныНоменклатурыКонтрагентовДопЦена1.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 2 ЦеныНоменклатурыКонтрагентов.Регистратор ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ГДЕ ЦеныНоменклатурыКонтрагентов.Номенклатура = СписокЗатрат.Затрата И ЦеныНоменклатурыКонтрагентов.ТипЦен.ТипЦеныНоменклатуры = &ТипЦен УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыКонтрагентов.Регистратор.Дата УБЫВ)) И (НЕ ЦеныНоменклатурыКонтрагентовДопЦена1.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 1 ЦеныНоменклатурыКонтрагентов.Регистратор ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ГДЕ ЦеныНоменклатурыКонтрагентов.Номенклатура = СписокЗатрат.Затрата И ЦеныНоменклатурыКонтрагентов.ТипЦен.ТипЦеныНоменклатуры = &ТипЦен УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыКонтрагентов.Регистратор.Дата УБЫВ)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентовДопЦена2 ПО СписокЗатрат.Затрата = ЦеныНоменклатурыКонтрагентовДопЦена2.Номенклатура И (ЦеныНоменклатурыКонтрагентовДопЦена2.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 3 ЦеныНоменклатурыКонтрагентов.Регистратор ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ГДЕ ЦеныНоменклатурыКонтрагентов.Номенклатура = СписокЗатрат.Затрата И ЦеныНоменклатурыКонтрагентов.ТипЦен.ТипЦеныНоменклатуры = &ТипЦен УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыКонтрагентов.Регистратор.Дата УБЫВ)) И (НЕ ЦеныНоменклатурыКонтрагентовДопЦена2.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 2 ЦеныНоменклатурыКонтрагентов.Регистратор ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов ГДЕ ЦеныНоменклатурыКонтрагентов.Номенклатура = СписокЗатрат.Затрата И ЦеныНоменклатурыКонтрагентов.ТипЦен.ТипЦеныНоменклатуры = &ТипЦен УПОРЯДОЧИТЬ ПО ЦеныНоменклатурыКонтрагентов.Регистратор.Дата УБЫВ)) |
|||
23
PCcomCat
07.04.17
✎
15:46
|
+(22) У меня поиск последней цены по номенклатуре. А у тебя максимум по номенклатуре
|
|||
24
azernot
07.04.17
✎
15:48
|
ВЫБРАТЬ
МАКСИМУМ(ПИК_КоэффСегмДляЗП.Период) КАК Период, ПИК_КоэффСегмДляЗП.Сегмент ПОМЕСТИТЬ ТМАКСП ИЗ РегистрСведений.ПИК_КоэффСегмДляЗП КАК ПИК_КоэффСегмДляЗП СГРУППИРОВАТЬ ПО ПИК_КоэффСегмДляЗП.Сегмент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура, Максимум(ТМАКСП.Период) КАК Период ПОМЕСТИТЬ НоменклатураМаксимумПериодСегмента ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТМАКСП КАК ТМАКСП ПО НоменклатураСегмента.Сегмент = ТМАКСП.Сегмент СГРУППИРОВАТЬ ПО НоменклатураСегмента.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура, ТМАКСП.Период КАК Период, ТМАКСП.Сегмент КАК Сегмент ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТМАКСП КАК ТМАКСП ПО НоменклатураСегмента.Сегмент = ТМАКСП.Сегмент ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураМаксимумПериодСегмента КАК НоменклатураМаксимумПериодСегмента ПО НоменклатураСегмента.Номенклатура= НоменклатураМаксимумПериодСегмента.Номенклатура И ТМАКСП.период= НоменклатураМаксимумПериодСегмента.Период |
|||
25
Вафель
07.04.17
✎
15:48
|
написать развернуто срез последних - это классическая задача.
гуглится на раз-два. |
|||
26
PCcomCat
07.04.17
✎
15:50
|
(24) Максимум сегмента у каждой номенклатуры свой. Не прокатит...
|
|||
27
azernot
07.04.17
✎
15:52
|
(26) Да? И в каком регистре период сегмента по номенклатуре хранится?
|
|||
28
lakich
07.04.17
✎
15:54
|
(24) все просто...спасибо)..а я тормоз))
|
|||
29
azernot
07.04.17
✎
16:01
|
(28) Но если для двух сегментов одинаковая дата, и с этими двумя сегментами связана одна номенклатура - запрос даст сбой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |