/*
-- 测试数据,SQL2000通过测试
-- 有A,B两个表
-- A表数据
create table #表a(编号 varchar(4),名称 varchar(20))
insert into #表a
select 'a','啤酒' union all
select 'b','香烟' union all
select 'c','火柴' union all
select 'd','饮料'
-- B表数据
create table #表b(日期 varchar(5),编号 varchar(4),数量 int)
insert into #表b
select '05-01','a',12 union all
select '05-01','b',2 union all
select '05-02','a',5 union all
select '05-02','c',8 union all
select '05-03','c',8
*/
declare @Id int,@MaxId int,@日期 varchar(5)
if object_id('tempdb..#表c')is not null
drop table #表c
create table #表c(ID INT IDENTITY(1,1),日期 varchar(5))
if object_id('tempdb..#表d')is not null
drop table #表d
create table #表d(日期 varchar(5),编号 varchar(4),数量 int ,名称 varchar(20))
insert into #表c(日期)
select 日期 from #表b group by 日期
set @MaxId=@@rowcount
-- select * from #表a
-- select * from #表b
-- select * from #表c
select @Id=1,@日期=''
while @Id <=@MaxId
begin
select @Id=ID,@日期=日期 from #表c where ID=@id
insert into #表d
select 日期,b.编号,数量,名称 from #表b as b
left join #表a as a on a.编号=b.编号
where 日期=@日期
union all
select '小计','',sum(数量),'' from #表b where 日期=@日期
set @Id=@Id+1
end
if @MaxId >0
insert into #表d
select '总计','',sum(数量),'' from #表b
select * from #表d
[此贴子已经被作者于2018-1-16 10:43编辑过]