|
|
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Может кто писал алгоритм на T-SQL такой штуки: нужно реализовать сумму с накоплением в таблице, т.е. расчитать сумму в поле P1 таким образом, чтобы значение поля P1 было равно сумме предыдущих значний по полю P. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 11:40 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Тупой медленный запрос , но других нет select t1.id,t1.p,sum(t2.p) as sum_p from SomeTable t1, SomeTable t2 where t2.id <= t1.id Он же, только записан более понятно select t1.id,t1.p, ( select sum(t2.p) from SomeTable t2 where t2.id<=t1.id ) as sum_p from SomeTable t1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:03 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
declare @t table( date int, s int) insert @t select 1,1 insert @t select 1,2 insert @t select 2,4 insert @t select 2,5 insert @t select 3,1 declare @d table (date int) insert @d select distinct date from @t select d.date, sum(s) from @d d, @t t where t.date<=d.date group by d.date В отличии от примера zamm здесь позволяются повторения дат, хотя суть одна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:11 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Приблизительно так create table #table1 (id int identity, inv_period char(7), summa decimal(10,2)) insert into #table1 values('2001/01', 10) insert into #table1 values('2001/02', 15) insert into #table1 values('2001/03', 7) insert into #table1 values('2001/04', 20) insert into #table1 values('2001/05', 10) select a.inv_period, max(a.summa) as summa1, sum(coalesce(b.summa, 0)) as summa2 from #table1 a left outer join #table1 b on b.inv_period < a.inv_period group by a.inv_period drop table #table1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:13 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
Всем огромное спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2001, 13:24 |
|
||
|
Сумма с накоплением
|
|||
|---|---|---|---|
|
#18+
по скорости выполнения: 1. приведенный выше способ самый медленный 2. с использованием курсоров 3. с использованием Update смотрите синтаксис Update - возможно сохранение промежуточных результатов в переменной (не знаю как в 7 но в 2000 такое есть) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2001, 15:05 |
|
||
|
|

start [/forum/search_topic.php?author=newbuy%27&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
5ms |
get forum list: |
9ms |
get settings: |
7ms |
get forum list: |
12ms |
get settings: |
7ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
6ms |
get forum list: |
10ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
10ms |
get first new msg: |
37ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 27710ms |
| total: | 28163ms |

| 0 / 0 |
