제가 데이터베이스 하나도 몰라서 그러는데 좀 알려주세요
쿼리문 작성...
-- 스키마 생성
create table tbla([id] int identity, col1 char(1), col2 int)
go
-- 테스트 데이터 입력
insert into tbla (col1, col2) values ('A',10)insert into tbla (col1, col2) values ('B',20)insert into tbla (col1, col2) values ('C',10)insert into tbla (col1, col2) values ('D',30)
-- 데이터 확인
select * from tbla
-- --------------------------------------------------------- 프로시져의 시작-- -------------------------------------------------------
create proc sum_of_row
as
-- 석이가 ^-^-- drop proc sum_of_row
declare cur_sum_of_row cursorfor select [id], col1, col2 from tbladeclare @id int , @col1 char(1), @col2 intdeclare @tblx table([id] int,xcola char(1),xcolb int,xsum int default 0)open cur_sum_of_rowfetch next from cur_sum_of_row into @id, @col1, @col2while @@fetch_status = 0 begin insert into @tblx ([id], xcola, xcolb) values (@id, @col1, @col2) update @tblx set xsum = (select sum(xcolb) from @tblx) where id = @id fetch next from cur_sum_of_row into @id, @col1, @col2 endselect * from @tblxclose cur_sum_of_rowdeallocate cur_sum_of_row
-- --------------------------------------------------------- 프로시져의 끝-- -------------------------------------------------------
-- 실행
exec sum_of_row
-- 결과
id xcola xcolb xsum ----------- ----- ----------- ----------- 1 A 10 102 B 20 303 C 10 404 D 30 70
(4 row(s) affected)
헐~ 하나의 sql 이래요
전 노가다 했어요 ㅠ.ㅠ
exec proc 하나잖아 얼메나 쉬어 -_-;
/*create table testTB([id] int identity, col1 char(1), col2 int)
insert into testTB (col1, col2) values ('A',10)insert into testTB (col1, col2) values ('B',20)insert into testTB (col1, col2) values ('C',10)insert into testTB (col1, col2) values ('D',30)
--drop table testTB*/
select x.col1, x.col2 , (select sum(col2) from testTB where [id] <= x.[id]) as 누계 from testTB xorder by 1
이것도 있네요 참고하십시요 ^^
-_- ; 아 쪽팔린다....ㅠ,ㅠ
선배님 왜 msn 안들어 오세요 -_- 오늘 msn 고장인가봐요 ^-^
반성중입니다. ㅠ.ㅠ 이래서 뭔 dba 를 한다고 ㅠ.ㅠ
크로스 조인을 이용한 누적합계
select a.v1, a.v2, b.v1, b.v2from tblx a cross join tblx b where b.v1 <= a.v1order by a.v1, b.v2
select a.v2, b.v2from tblx a cross join tblx b where b.v1 <= a.v1order by a.v1, b.v2
select a.v2, sum(b.v2)from tblx a cross join tblx b where b.v1 <= a.v1group by a.v2order by min(a.v1)