Так вот таблица:Расчет с последовательным индикатором
Name Indicator Amount
Anson 1 3.5
Anson 2 2.6
Anson 3 8.4
Anson 4 3.2
Anson 6 3.7
Ben 1 7
Ben 3 4.7
Ben 4 3.6
Как я могу получить сумму суммы, когда индикатор подряд? Это результат, который я хочу:
Name Indicator Amount
Anson 1,2,3,4 17.7
Anson 6 3.7
Ben 1 7
Ben 3,4 8.3
Я пробовал это, но он мог сочетать только два последовательных индикатора.
select name_, indicator, amount, sum_amount,
(CASE WHEN diff = 1 THEN sum_amount ELSE amount END) as final_amount,
(CASE WHEN diff = 1 THEN convert(varchar(10),prev_ind)+',' +convert(varchar(10),indicator) ELSE convert(varchar(10),indicator) END) as indicator
FROM (
select name_, indicator, prev_ind, sum(indicator-prev_ind) as diff, amount,
sum(amount + prev_amount) sum_amount
from (
select name_, indicator, lag(indicator,1,0) over (order by name_, indicator) prev_ind, amount,
lag(amount,1,0) over (order by name_) prev_amount
from tabb
)g
where indicator <> 1
group by name_, indicator, prev_ind, amount
)u
Спасибо!
Можете ли вы отправить запрос, который вы пробовали? –
Что бы вы получили, просто не обработав результаты, полученные из сортировки на «Name» и «Indicator»? Это больше похоже на обработку отсортированных результатов, а не на создание некоторого SQL для этого в операции сервера. –
Я пробовал этот запрос, но он мог комбинировать только два последовательных индикатора @RaduGheorghiu – gsql