--续上面
--px=''
if @px=''
begin
if @start<>'' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp
select ziduan as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start and vdate<=@finish group by ziduan
union
select '合计',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp order by 2 desc,4 desc
end
if @start='' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp
select convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate<=@finish group by ziduan
union
select '合计',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp order by 2 desc,4 desc
end
if @start<>'' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp
select convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start group by ziduan
union
select '合计',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp order by 2 desc,4 desc
end
if @start='' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp
select convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id group by ziduan
union
select '合计',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp order by 2 desc,4 desc
end
end
exec sp_excel 123,'2005-09-12','2006-09-12','a'
================================================
存储过程如下,实在不知道改怎么改,多谢了!
========================
CREATE PROCEDURE sp_excel
@id bigint,
@start datetime,
@finish datetime,
@px char(2)
AS
declare @t1 float
declare @t2 float
if @px='a' or @px='b'
begin
if @start<>'' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'-'+convert(nvarchar(2),month(vdate))+'-'+convert(nvarchar(2),day(vdate)) as '日期',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start and vdate<=@finish group by vdate,ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start='' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'-'+convert(nvarchar(2),month(vdate))+'-'+convert(nvarchar(2),day(vdate)) as '日期',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate<=@finish group by vdate,ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start<>'' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'-'+convert(nvarchar(2),month(vdate))+'-'+convert(nvarchar(2),day(vdate)) as '日期',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start group by vdate,ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start='' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'-'+convert(nvarchar(2),month(vdate))+'-'+convert(nvarchar(2),day(vdate)) as '日期',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id group by vdate,ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp order by 1,3 desc,5 desc
end
end
--px=c,d
if @px='c' or @px='d'
begin
if @start<>'' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月' as '月份',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start and vdate<=@finish group by convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月',ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start and vdate<=@finish group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start='' and @finish<>''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月' as '月份',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate<=@finish group by convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月',ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate<=@finish group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start<>'' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月' as '月份',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id and vdate>=@start group by convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月',ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id and vdate>=@start group by ziduan) as temp order by 1,3 desc,5 desc
end
if @start='' and @finish=''
begin
select @t1=sum(c1),@t2=sum(c2) from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp
select convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月' as '月份',convert(nvarchar(10),ziduan) as '字段',sum(cishu1) as '次数1',convert(nvarchar(5),round(sum(cishu1)*100/@t1,2))+'%' as '次数1比例',sum(cishu2) as '次数2',convert(nvarchar(5),round(sum(cishu2)*100/@t2,2))+'%' as '次数2比例' from test_table where
id=@id group by convert(nvarchar(4),year(vdate))+'年'+convert(nvarchar(2),month(vdate))+'月',ziduan
union
select '合计','',sum(c1),'100%',sum(c2),'100%' from (select ziduan,sum(cishu1) as c1,sum(cishu2) as c2 from test_table where id=@id group by ziduan) as temp order by 1,3 desc,5 desc
end
end