Выборка суммы в максимальных датах

Автор Multicvet, августа 01, 2014, 06:38:26 pm

« предыдущая - следующая »

Multicvet

Привет всем!

Наверное глупый вопрос для опытных пользователей QV, а я вот застрял, всю голову сломал.

Есть у меня таблица с остатками по клиентам на дату:

ООО Кубик | 01.01.2014 | 10 шт.
ООО Кубик | 01.02.2014 | 20 шт.
ООО Мячик | 01.01.2014 | 10 шт.
ООО Мячик | 01.08.2014 | 5 шт.
ООО Домик | 01.06.2014 | 7 шт.

Мне нужно вывести остаток на максимальную дату по каждому клиенту:
ООО Кубик | 20 шт
ООО Мячик | 5 шт
ООО Домик | 7 шт

Пробовал по разному, даже так sum(if([Дата]=Max ([Дата]),Остаток)) - без результата...

admin

августа 04, 2014, 04:35:25 pm #1 Последнее редактирование: августа 04, 2014, 04:39:36 pm от admin
Привет,
самое простое, на мой взгляд:
tableA:
LOAD *,Trim(Фирма)&num(Дата) as KeyTmp INLINE [
    Фирма, Дата, Кол-во
    ООО Кубик, 01.01.2014, 10
    ООО Кубик, 01.02.2014, 20
    ООО Мячик, 01.01.2014, 10
    ООО Мячик, 01.08.2014, 5
    ООО Домик, 01.06.2014, 7
];

left join
load Trim(Фирма)&Max(Дата) as KeyTmp,
1 as Флаг
Resident tableA
Group by Фирма;
drop Field KeyTmp;

И в формуле применяем Set analyse
Sum ({<Флаг={'1'}>}[Кол-во])
[smg id=30]

admin

Поясню замысел:
В скрипте мы просто формируем флаг для записи с максимальной датой по каждому клиенту.
Для чего используем временный ключ, который по завершении просто удаляем.

Multicvet

Спасибо!
+ еще функционал настройки позволяет ограничить выборку (см. скрин)

admin

Ну я бы не советовал в данном случае.
Рекомендую сверять результат с эталоном.

Рейтинг@Mail.ru Яндекс.Метрика