2012-01-31 2 views
2

Скажем, у меня есть таблица вроде этого:Sql SUM указывает шаг за шагом

ID_points ID_team points date 
1   1  2  1/15/2012 
2   1  0  1/16/2012 
3   1  -1 1/17/2012 
4   1  3  1/18/2012 
5   1  4  1/18/2012 

Теперь, что я хочу сделать, это SUM точки, но не все точки, а шаг за шагом, так что я может иметь хороший график.

Например, я хотел бы мой стол, чтобы выглядеть следующим образом (после того, как я фильтр команды по ID и заказ по дате ASC):

ID_points ID_team points date 
1   1  2  1/15/2012 
2   1  2  1/16/2012 
3   1  1 1/17/2012 
4   1  4  1/18/2012 
5   1  8  1/18/2012 

Возможно ли это или нет?

+2

Что РСУБД? И это также дубликат разнообразных вопросов «Запуск всего»: http://stackoverflow.com/search?q=%2Bsql+%2B+running+%2Btotal – gbn

ответ

0
declare @tbl table (ID_points int primary key, ID_team int, points int, [date] date) 

insert into @tbl select 1,1,2,'1/15/2012' 
union select 2,1,0,'1/16/2012' 
union select 3,1,-1,'1/17/2012' 
union select 4,1,3,'1/18/2012' 
union select 5,1,4,'1/18/2012' 


select t1.ID_points, t1.ID_team, sum(t2.points) points, t1.[date] 
from @tbl t1 
left join @tbl t2 
    on t1.ID_points >= t2.ID_points 
group by t1.ID_points, t1.ID_team, t1.[date] 
+0

Посмотрите на мои анны .... – Some1

+0

если вы могли бы помочь, это будет действительно здорово, потому что я не знаю, почему это не работает. – Some1

0

Если вы используете СУБД, которая поддерживает функции управления окнами, это так просто, как:

SELECT ID_points, 
     ID_team, 
     points, 
     sum(points) over (partition by id_team order by date) as running_poins 
FROM the_table 
ORDER BY id_team, date 
Смежные вопросы