chencidi

步骤:

  1.从表中查询数据,进行按月分组

  2.与临时表关联

 

Create table tb(日期 Varchar(10),时间 Varchar(10),价格 float)

insert tb values(\'2009-01-01\',\'02:00:00\',\'12.55\')
insert tb values(\'2009-02-22\',\'02:00:00\',\'26.55\')
insert tb values(\'2009-01-22\',\'04:00:00\',\'10.52\')
insert tb values(\'2009-02-22\',\'06:00:00\',\'23.55\')
insert tb values(\'2009-03-22\',\'08:00:00\',\'52.65\')
insert tb values(\'2009-04-22\',\'10:00:00\',\'23.21\')
insert tb values(\'2009-05-22\',\'12:00:00\',\'32.55\')
insert tb values(\'2009-06-22\',\'14:00:00\',\'15.54\')
insert tb values(\'2009-01-22\',\'16:00:00\',\'18.44\')
insert tb values(\'2009-02-22\',\'18:00:00\',\'20.10\')
insert tb values(\'2009-03-22\',\'20:00:00\',\'34.48\')
insert tb values(\'2009-04-22\',\'22:00:00\',\'18.55\')
insert tb values(\'2010-05-23\',\'00:00:00\',\'42.51\')
insert tb values(\'2010-05-23\',\'02:00:00\',\'36.64\')
insert tb values(\'2011-05-23\',\'04:00:00\',\'66.22\')
insert tb values(\'2012-05-23\',\'06:00:00\',\'54.41\')
select 日期,avg(价格) as 平均价格 from tb Group by 日期

GO

 

create proc wsp
 @year int
as
 declare @i int
 set @i=1
 --当前年1-12月表
 declare @t table (dt varchar(10))
 while @i<=12
 begin
  if @i<10
   insert @t values(cast(@year as char(4))+\'-0\'+cast(@i as varchar))
  else
   insert @t values(cast(@year as char(4))+\'-\'+cast(@i as varchar))
  set @i=@i+1
 end
 --和临时表关联
 select b.dt,ISNULL(tt.价格,0) as价格 from
 (
  select CONVERT(VARCHAR(7),aa.日期,120) as 日期,SUM(aa.价格) as 价格
  from tb as aa group by CONVERT(VARCHAR(7),aa.日期,120)
 ) as tt right join @t as b on tt.日期=b.dt

union all
select f1= \'总计\' , sum(价格) 价格 from tb where year(tb.日期)=@year
go

--执行

exec wsp 2009

分类:

技术点:

相关文章:

  • 2022-03-02
  • 2021-12-14
  • 2022-03-09
  • 2021-12-04
  • 2021-07-15
  • 2021-12-04
  • 2021-04-18
猜你喜欢
  • 2021-12-04
  • 2022-12-23
  • 2021-12-25
  • 2021-11-18
  • 2021-12-04
  • 2021-12-14
  • 2021-12-04
相关资源
相似解决方案