业务员 年 月 客户 发货 运费 质保金
张三 2009 1 香港某某公司 1
张三 2009 1 上海某某公司 1
张三 2009 1 厦门某某公司 1
张三 2009 1 当月合计 3
张三 2009 1 累 计 3
张三 2009 2 厦门某某公司 2
张三 2009 2 上海某某公司 2
张三 2009 2 珠海某某公司 2
张三 2009 2 当月合计 6
张三 2009 2 累 计 9
==============================================================================
明细表汇总出上面的效果:
按月合计这个好办,但是累计似乎比较难。希望有做过类似应用的兄弟不吝赐教
------最佳解决方案--------------------
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([业务员] varchar(10),[年] int,[月] int,[客户] varchar(20),[发货] int)
insert [tb] select '张三',2009,1,'香港某某公司',1
union all select '张三',2009,1,'上海某某公司',1
union all select '张三',2009,1,'厦门某某公司',1
--union all select '张三',2009,1,'当月合计',3
--union all select '张三',2009,1,'累计',3
union all select '张三',2009,2,'厦门某某公司',2
union all select '张三',2009,2,'上海某某公司',2
union all select '张三',2009,2,'珠海某某公司',2
--union all select '张三',2009,2,'当月合计',6
--union all select '张三',2009,2,'累计',9
go
select *
from
(
select * from tb
union all
select 业务员,年,月,'当月合计',sum(发货) from tb group by 业务员,年,月
union all
select 业务员,年,月,'累计',(select sum(发货) from (select 业务员,年,月,sum(发货) 发货 from tb group by 业务员,年,月) a where a.业务员=t.业务员 and a.年=t.年 and a.月<=t.月) from (select 业务员,年,月,sum(发货) 发货 from tb group by 业务员,年,月) t group by 业务员,年,月
) tb
order by 年,月,case 客户 when '累计' then 3 when '当月合计' then 2 else 1 end
/*
业务员 年 月 客户 发货
---------- ----------- ----------- -------------------- -----------
张三 2009 1 香港某某公司 1
张三 2009 1 上海某某公司 1
张三 2009 1 厦门某某公司 1
张三 2009 1 当月合计 3
张三 2009 1 累计 3