聚合数据

sg2333333234 2008-10-21 11:55:39
连续聚合数据(提示可以用游标 循环)
create table sales
( empno int,
saledate datetime,
qty int
);

insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-3',20);
insert into sales values(1,'2007-11-4',30);
insert into sales values(1,'2007-11-4',30);

insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-3',20);
insert into sales values(2,'2007-11-4',30);
insert into sales values(2,'2007-11-4',30);

示例数据结果显示如下:
1 2007-11-1 20
1 2007-11-2 60
1 2007-11-3 80
1 2007-11-4 140
2 2007-11-1 20
2 2007-11-2 60
2 2007-11-3 80
2 2007-11-4 140
...全文
173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
百年树人 2008-10-22
  • 打赏
  • 举报
回复
create table sales 
( empno int,
saledate datetime,
qty int
);

insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-3',20);
insert into sales values(1,'2007-11-4',30);
insert into sales values(1,'2007-11-4',30);

insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-3',20);
insert into sales values(2,'2007-11-4',30);
insert into sales values(2,'2007-11-4',30);

--begin
select empno,convert(varchar(10),saledate,120) as saledate,
qty=(select sum(qty) from sales where saledate<=a.saledate and empno=a.empno) from sales a
group by empno,saledate
order by empno,saledate

--result
empno saledate qty
----------- ---------- -----------
1 2007-11-01 20
1 2007-11-02 60
1 2007-11-03 80
1 2007-11-04 140
2 2007-11-01 20
2 2007-11-02 60
2 2007-11-03 80
2 2007-11-04 140

(所影响的行数为 8 行)
CN_SQL 2008-10-22
  • 打赏
  • 举报
回复
啊,那就是一般的聚合嘛,参考happyflystone的了。
-狙击手- 2008-10-22
  • 打赏
  • 举报
回复
create table sales 
( empno int,
saledate datetime,
qty int
);

insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-1',10);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-2',20);
insert into sales values(1,'2007-11-3',20);
insert into sales values(1,'2007-11-4',30);
insert into sales values(1,'2007-11-4',30);

insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-1',10);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-2',20);
insert into sales values(2,'2007-11-3',20);
insert into sales values(2,'2007-11-4',30);
insert into sales values(2,'2007-11-4',30);

select empno,saledate,(select sum(qty) from sales where empno = b.empno and saledate <= b.saledate)
from(
select distinct empno,convert(char(10),saledate,120) as saledate
from sales a
) b
order by 1,2

drop table sales

/*
empno saledate
----------- ---------- -----------
1 2007-11-01 20
1 2007-11-02 60
1 2007-11-03 80
1 2007-11-04 140
2 2007-11-01 20
2 2007-11-02 60
2 2007-11-03 80
2 2007-11-04 140

(所影响的行数为 8 行)

*/
sg2333333234 2008-10-22
  • 打赏
  • 举报
回复
这个是想要得到的结果

数据结果显示如下:
1 2007-11-1 20
1 2007-11-2 60
1 2007-11-3 80
1 2007-11-4 140
2 2007-11-1 20
2 2007-11-2 60
2 2007-11-3 80
2 2007-11-4 140
-狙击手- 2008-10-22
  • 打赏
  • 举报
回复
create table sales
( empno int,
saledate datetime,
qty int
);

--

select empno,convert(char(10),saledate,120) as saledate,sum(qty) as qty
from sales
group by empno,convert(char(10),saledate,120)
CN_SQL 2008-10-22
  • 打赏
  • 举报
回复
什么意思?最后是你想要的结果?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧