|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
jamesgold
14.08.19
✎
20:49
|
Добрый день, прошу помочь!
Есть таблица вида: https://ibb.co/kJhmWg4 Нужно сделать запрос к таблице, если фио повторяется нужно брать только одну строку где сумма выше. Написал примерно такой запрос: Выбрать табл.ФИО, Максимум(табл.СуммаПоТовару) как МаксимальнаяСумма, КОЛИЧЕСТВО(табл.ФИО) КАК КоличествоПовторений ПОМЕСТИТЬ ВТ_ДублиФиоИМаксимальнаяСумма из Справочник.Покупатели как табл СГРУППИРОВАТЬ ПО табл.ФИО ИМЕЮЩИЕ КОЛИЧЕСТВО(табл.ФИО) > 1 ; Выбрать табл.Покупка, табл.ФИО, табл.СуммаПоТовару, ВТ_Дубли.МаксимальнаяСумма из Справочник.Покупатели как табл Левое СОЕДИНЕНИЕ ВТ_ДублиФиоИМаксимальнаяСумма как ВТ_Дубли по (ВТ_Дубли.ФИО = табл.ФИО) На выходе должна получиться таблица вида: https://ibb.co/d7MTVjY И дальше, уже при переборе результата запроса я смотрю где заполнено поле "МаксимальнаяСумма" и если оно равно полю "СуммаПоТовару" то беру только эту строку. Вопрос, можно ли решить эту задачу на уровне запроса при условии что суммы по фамилии могут быть одинаковыми а взять все равно нужно будет только одну строчку по фамилии? |
|||
1
palsergeich
14.08.19
✎
20:50
|
Можно
|
|||
2
jamesgold
14.08.19
✎
20:52
|
Можно поподробней?
|
|||
3
palsergeich
14.08.19
✎
20:53
|
(2) Куда подробнее?
Ты спросил можно ли сделать запросом, я говорю что да. Мне задачу за тебя решить?) |
|||
4
RomanYS
14.08.19
✎
20:55
|
(2) ты же уже решил. В чём проблема то?
|
|||
5
jamesgold
14.08.19
✎
20:56
|
(4) Хочу понять как это можно сделать в одном запросе
|
|||
6
palsergeich
14.08.19
✎
20:57
|
(5) Так у тебя один запрос.
|
|||
7
RomanYS
14.08.19
✎
20:58
|
(5) согласен с (6)
|
|||
8
jamesgold
14.08.19
✎
20:59
|
Я дальше перебираю эти записи и отсеиваю лишние, а хотелось на уровне запроса отсеять не нужные записи
|
|||
9
palsergeich
14.08.19
✎
21:01
|
(8) Если ты хочешь решить без 2го пакета в одном запросе то жди
https://wonderland.v8.1c.ru/blog/podderzhka-grouping-sets-v-yazyke-zaprosov/ |
|||
10
RomanYS
14.08.19
✎
21:02
|
(8) покажи что получается и что хочешь получить
|
|||
11
jamesgold
14.08.19
✎
21:04
|
(10) Кода в 1с нет пока, просто наброски в блокноте сделал и сюда скинул
|
|||
12
palsergeich
14.08.19
✎
21:04
|
(9) Хотя это скорее всего не то, что нужно тебе.
Есть идея как это сделать одним пакетом, но нет времени на вбитие |
|||
13
jamesgold
14.08.19
✎
21:06
|
(10) Хочу получить по этой таблице
https://ibb.co/kJhmWg4 в случае дубля фио только ту строчку где сумма максимальная |
|||
14
jamesgold
14.08.19
✎
21:07
|
(12) Схематично можешь рассказать?
|
|||
15
RomanYS
14.08.19
✎
21:08
|
(11) Э, не понял. Проблема уже есть? Судя по описанию(точнее по моему пониманию описания) твой запрос решает задачу (как я ее понял).
(13) яснее не стало. Это ссылка на исходную таблицу |
|||
16
jamesgold
14.08.19
✎
21:09
|
(15) Мой запрос не отсеивает лишние строки
|
|||
17
RomanYS
14.08.19
✎
21:09
|
(16) Может ты объяснишь какие "лишние"?
|
|||
18
jamesgold
14.08.19
✎
21:11
|
(17) Если фамилия в таблице дублируется, то брать нужно не все строки с этой фамилией одну строку где сумма максимальная
|
|||
19
Kashey
14.08.19
✎
21:17
|
Сгруппировать по Фамилии, вычислить максимум по сумме. Поместить в ВТ
Внутренним соединением ВТ и справочника по фамилии и сумме вывести продажу и поля из ВТ |
|||
20
RomanYS
14.08.19
✎
21:21
|
(18) Понятно. Видно не судьба на друг друга понять(
|
|||
21
jamesgold
14.08.19
✎
21:22
|
(19) Если суммы одинаковые у двух строчек по одной фамилии?
|
|||
22
Kashey
14.08.19
✎
21:26
|
(21) Ну тогда нужно понимать какую из продаж мы хотим оставить в этом случае, самую раннюю по дате или ещё какие условия
|
|||
23
jamesgold
14.08.19
✎
21:28
|
(22) Не условий, любую продажу, - но одну
|
|||
24
Kashey
14.08.19
✎
21:30
|
(23) Тогда какая разница, если выводится максимум по продаже конкретному покупателю в любом случае
|
|||
25
RomanYS
14.08.19
✎
21:35
|
(21) загугли "коррелированный запрос 1с". Вероятно это решает твою задачу без двух и более соединений
|
|||
26
jamesgold
14.08.19
✎
21:35
|
(24) Так при внутреннем соединении ВТ со справочником из справочника возьмутся две строки по одной фамилии, т.к. такие фио и сумма будет в обоих строчках
|
|||
27
Kashey
14.08.19
✎
21:40
|
(27) Ну помести результат в ещё одну ВТ, да сгруппируй по фамилии, сумме, и максимум по продаже
|
|||
28
jamesgold
14.08.19
✎
21:43
|
(27) Не получиться сгруппировать т.к. есть еще поле "Покупка", видишь они разные для одной фамилии
|
|||
29
Kashey
14.08.19
✎
21:45
|
(28)>>и максимум по продаже
Имелась в виду агрегатная функция к полю "Покупка". В твоём случае без разницы минимум или максимум |
|||
30
jamesgold
14.08.19
✎
21:54
|
(25) Посмотрел, спасибо что то в этом есть.
(29) Не группирует строки я пишу максимум(покупка), все равно две строчки останется на выходе. |
|||
31
Kashey
14.08.19
✎
22:03
|
(30) Текст своего запроса покажи
|
|||
32
jamesgold
14.08.19
✎
22:03
|
(29) Получилось, визуально все красиво. Но по смыслу не правильно т.к. он покупку взял взял по максимуму - не ту которая была где сумма больше
|
|||
33
RomanYS
14.08.19
✎
22:06
|
(32) у тебя должно быть два пакета, два соединения и две группировки. Ты похоже где-то упростил)
|
|||
34
jamesgold
14.08.19
✎
22:08
|
(31) ВЫБРАТЬ
Учет.ФИО, МАКСИМУМ(Учет.СуммаПокупки) КАК СуммаПокупки, КОЛИЧЕСТВО(Учет.ФИО) КАК ФИО1, МАКСИМУМ(Учет.Покупка) КАК Покупка ИЗ РегистрСведений.Учет КАК Учет СГРУППИРОВАТЬ ПО Учет.ФИО ИМЕЮЩИЕ КОЛИЧЕСТВО(Учет.ФИО) > 1 Здесь просто первая таблица -получаю только где дубли фамилий |
|||
35
Kashey
14.08.19
✎
22:14
|
ВЫБРАТЬ
Учет.ФИО, МАКСИМУМ(Учет.СуммаПокупки) КАК СуммаПокупки, ИЗ РегистрСведений.Учет КАК Учет СГРУППИРОВАТЬ ПО Учет.ФИО Вот это поместить в ВТ, в первом пакете |
|||
36
jamesgold
14.08.19
✎
22:19
|
(35) Так сматри при внутреннем соединении когда по одной фамилии будет несколько строк но сумма будет одинаковая, он оставит все строчки во второй таблице по этой фамилии, а сгруппировать вторую таблицу не получиться т.к. в поле покупка разные значения у строк с одной фамилией
|
|||
37
jamesgold
14.08.19
✎
22:21
|
(36) если брать максимум он берет не ту покупку, где сумма выше
|
|||
38
Kashey
14.08.19
✎
22:31
|
>>будет несколько строк но сумма будет одинаковая
>>берет не ту покупку, где сумма выше Если сумма одинаковая(максимум по конкретному покупателю) пусть даже несколько продаж по нему с одинаковой суммой , то откуда возьмётся сумма выше? |
|||
39
breezee
15.08.19
✎
05:11
|
Во втором пакете добавь Различные
|
|||
40
jamesgold
15.08.19
✎
07:25
|
(38) Спасибо!! Понял идею попробую.
(39) В поле покупка разные значения, различные не поможет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |