|
Сумма значений за последние дни отчетных периодов
|
|||
---|---|---|---|
#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, 15:49 |
|
Сумма значений за последние дни отчетных периодов
|
|||
---|---|---|---|
#18+
andrew_therion, Ограничения есть, как решать? Хранимой процедурой, скриптом, одним селектом? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 22:55 |
|
Сумма значений за последние дни отчетных периодов
|
|||
---|---|---|---|
#18+
andrew_therion, Как на приведенных исходных данных могло получится то, что выделено красным? Кодсумма операция_1 сумма операция_210027 19 2001851273001057240050 34 Или очепятка? И имелось ввиду такое: Кодсумма операция_1 сумма операция_210027 18 2001851273001057240050 35 А вообще - классическая задача по выборке первых/последних строк в группе по заданному критерию сортировки... Методов решения - масса: left join, in-подзапрос, join с агрегированным подзапросом (derived-table) Варианты реализации можно глянуть тут . Некоторые из способов будут работать и на твоем сервере... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 04:59 |
|
Сумма значений за последние дни отчетных периодов
|
|||
---|---|---|---|
#18+
АнатоЛойandrew_therion, Ограничения есть, как решать? Хранимой процедурой, скриптом, одним селектом? Нужно одним селектом. Я пока чайник в этих делах, умею только простыми селектами играться...но на будущее было не плохо освоить процедуры, скрипты :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 09:12 |
|
Сумма значений за последние дни отчетных периодов
|
|||
---|---|---|---|
#18+
Добрый Э - Эхandrew_therion, Как на приведенных исходных данных могло получится то, что выделено красным? Кодсумма операция_1 сумма операция_210027 19 2001851273001057240050 34 Или очепятка? И имелось ввиду такое: Кодсумма операция_1 сумма операция_210027 18 2001851273001057240050 35 Да, извиняюсь, вышла опечатка А вообще - классическая задача по выборке первых/последних строк в группе по заданному критерию сортировки... Методов решения - масса: left join, in-подзапрос, join с агрегированным подзапросом (derived-table) Варианты реализации можно глянуть тут . Некоторые из способов будут работать и на твоем сервере... Буду пробовать...:) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 09:37 |
|
|
start [/forum/topic.php?desktop=1&fid=44&tid=1606954]: |
0ms |
get settings: |
28ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
151ms |
get tp. blocked users: |
2ms |
others: | 283ms |
total: | 537ms |
0 / 0 |