Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
19.05.2014, 15:49
|
|||
---|---|---|---|
|
|||
Сумма значений за последние дни отчетных периодов |
|||
#18+
Добрый день. Помогите решить задачу Есть таблица данных: ИдКодотчетный_периоддата_операцииоперация_1операция_21100101.02.20141072100117.02.20141283100201.03.201415104200101.02.201460415200201.03.201450346200215.03.201455387200301.04.201470488300101.02.201445319300201.03.2014503410300205.03.2014604111400101.02.2014201412400201.03.20143021 Нужно суммировать значения полей операция_1 и операция_2 в зависимости от последней даты проведения самой операции, по каждому коду и отчетному периоду отдельно В результате должно получится следующее: Кодсумма операция_1 сумма операция_21002719200185127300105724005034 ...т.е. для код 100 должно возвращаться сумма значений полей операция_1, операция_2 для ИД = 2 и 3, так как для отчетного периода = 1, последний день операции = 17.02.2014 для код 200 - ИД = 4, 6 и 7 для код 300 - ИД = 8 и 10 для код 200 - ИД = 11 и 12 В случае если за последний день было проведены две операции за тот же отчетный период, чтоб бралось в подсчет максимальное значение поля операция_1 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.05.2014, 22:55
|
|||
---|---|---|---|
Сумма значений за последние дни отчетных периодов |
|||
#18+
andrew_therion, Ограничения есть, как решать? Хранимой процедурой, скриптом, одним селектом? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.05.2014, 04:59
|
|||
---|---|---|---|
|
|||
Сумма значений за последние дни отчетных периодов |
|||
#18+
andrew_therion, Как на приведенных исходных данных могло получится то, что выделено красным? Кодсумма операция_1 сумма операция_210027 19 2001851273001057240050 34 Или очепятка? И имелось ввиду такое: Кодсумма операция_1 сумма операция_210027 18 2001851273001057240050 35 А вообще - классическая задача по выборке первых/последних строк в группе по заданному критерию сортировки... Методов решения - масса: left join, in-подзапрос, join с агрегированным подзапросом (derived-table) Варианты реализации можно глянуть тут . Некоторые из способов будут работать и на твоем сервере... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.05.2014, 09:12
|
|||
---|---|---|---|
|
|||
Сумма значений за последние дни отчетных периодов |
|||
#18+
АнатоЛойandrew_therion, Ограничения есть, как решать? Хранимой процедурой, скриптом, одним селектом? Нужно одним селектом. Я пока чайник в этих делах, умею только простыми селектами играться...но на будущее было не плохо освоить процедуры, скрипты :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.05.2014, 09:37
|
|||
---|---|---|---|
|
|||
Сумма значений за последние дни отчетных периодов |
|||
#18+
Добрый Э - Эхandrew_therion, Как на приведенных исходных данных могло получится то, что выделено красным? Кодсумма операция_1 сумма операция_210027 19 2001851273001057240050 34 Или очепятка? И имелось ввиду такое: Кодсумма операция_1 сумма операция_210027 18 2001851273001057240050 35 Да, извиняюсь, вышла опечатка А вообще - классическая задача по выборке первых/последних строк в группе по заданному критерию сортировки... Методов решения - масса: left join, in-подзапрос, join с агрегированным подзапросом (derived-table) Варианты реализации можно глянуть тут . Некоторые из способов будут работать и на твоем сервере... Буду пробовать...:) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=44&mobile=1&tid=1606954]: |
0ms |
get settings: |
24ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
164ms |
get tp. blocked users: |
2ms |
others: | 308ms |
total: | 571ms |
0 / 0 |