(急)SQL累加计算问题
我目前遇到如下两个问题:
1.目前我有一个表(Table1),如下所示:
日期 部门 姓名 当日业绩
2008-3-1 组1 张三 5000
2008-3-3 组1 张三 3000
2008-3-5 组1 张三 1000
2008-3-1 组2 李四 2000
2008-3-4 组2 李四 1500
2008-3-5 组2 李四 1200
2008-3-2 组1 王五 1000
2008-3-3 组1 王五 1300
2008-3-15 组1 王五 2800
2008-4-2 组1 张三 3000
2008-4-10 组1 张三 8000
2008-4-20 组1 张三 2000
2008-4-1 组2 李四 2500
2008-4-5 组2 李四 1800
2008-4-22 组2 李四 2200
2008-4-4 组1 王五 2400
2008-4-7 组1 王五 2600
2008-4-18 组1 王五 3300
我想按照日期、部门、人员算出每天、每人累计业绩是多少,也就是想得到下图的内容:
日期 部门 姓名 当日业绩 累计业绩
2008-3-1 组1 张三 5000 5000
2008-3-3 组1 张三 3000 8000
2008-3-5 组1 张三 1000 9000
2008-3-1 组2 李四 2000 2000
2008-3-4 组2 李四 1500 3500
2008-3-5 组2 李四 1200 4700
2008-3-2 组1 王五 1000 1000
2008-3-3 组1 王五 1300 2300
2008-3-15 组1 王五 2800 5100
2008-4-2 组1 张三 3000 3000
2008-4-10 组1 张三 8000 11000
2008-4-20 组1 张三 2000 13000
2008-4-1 组2 李四 2500 2500
2008-4-5 组2 李四 1800 4300
2008-4-22 组2 李四 2200 6500
2008-4-4 组1 王五 2400 2400
2008-4-7 组1 王五 2600 5000
2008-4-18 组1 王五 3300 8300
2.第二种情况正好和第一种情况相反,是已知每人每天的累计金额,求其每天的金额,已知表(Table2),内容如下表所示:
日期 部门 姓名 累计业绩
2008-3-1 组1 张三 5000
2008-3-3 组1 张三 5000
2008-3-5 组1 张三 5000
2008-3-1 组2 李四 2000
2008-3-4 组2 李四 3500
2008-3-5 组2 李四 4700
2008-3-2 组1 王五 1000
2008-3-3 组1 王五 2300
2008-3-15 组1 王五 2300
2008-4-2 组1 张三 3000
2008-4-10 组1 张三 3000
2008-4-20 组1 张三 5000
2008-4-1 组2 李四 2500
2008-4-5 组2 李四 4300
2008-4-22 组2 李四 6500
2008-4-4 组1 王五 2400
2008-4-7 组1 王五 5000
2008-4-18 组1 王五 5000
得到如下结果:
日期 部门 姓名 累计业绩 当天业绩
2008-3-1 组1 张三 5000 5000
2008-3-2 组1 张三 5000 0
2008-3-3 组1 张三 5000 0
2008-3-3 组2 李四 2000 2000
2008-3-4 组2 李四 3500 1500
2008-3-5 组2 李四 4700 1200
2008-3-10 组1 王五 1000 1000
2008-3-11 组1 王五 2300 1300
2008-3-12 组1 王五 2300 0
2008-4-2 组1 张三 3000 3000
2008-4-3 组1 张三 3000 0
2008-4-4 组1 张三 5000 2000
2008-4-1 组2 李四 2500 2500
2008-4-2 组2 李四 4300 1800
2008-4-3 组2 李四 6500 2200
2008-4-7 组1 王五 2400 2400
2008-4-8 组1 王五 5000 2600
2008-4-9 组1 王五 5000 0
请各位大虾指教!
------解决方案--------------------SQL code
select aaa.日期,aaa.部门,aaa.姓名,bbb.累计业绩,aaa.当天业绩
from table aaa inner join
(select 姓名,sum(当天业绩) as 累计业绩 from table group by 姓名) bbb on a.姓名=b.姓名
------解决方案--------------------
先贴第一种情况
SQL code
-- 生成测试数据
declare @table table(日期 datetime,部门 nvarchar(50),姓名 nvarchar(50),当天业绩 int)
insert into @table
select '2008-3-1',N'组1',N'张三' ,'5000'
union
select '2008-3-1' , N'组1' , N'张三' , ' 5000 '
union
select '2008-3-3' , N