create table tab(日期 datetime,销售额 int)
go
declare @i int
set @i=1
while @i<=90
begin
insert tab(日期,销售额)
values(dateadd(day,@i,'2007-03-01'),@i*10)
set @i=@i+1
end
go
select * from tab
godeclare @bDate datetime
declare @eDate datetimeset @bDate='2007-05-01'
set @eDate='2007-05-30'
select a.日期,a.销售额,[上月销售额]=b.销售额,[上两月销售额]=c.销售额
from tab a,
(select 日期=dateadd(month,1,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-1,@bDate) and dateadd(month,-1,@eDate)) k) b,
(select 日期=dateadd(month,2,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-2,@bDate) and dateadd(month,-2,@eDate)) k) c
where a.日期=b.日期 and a.日期=c.日期 and a.日期 between @bDate and @eDate
go
go
declare @i int
set @i=1
while @i<=90
begin
insert tab(日期,销售额)
values(dateadd(day,@i,'2007-03-01'),@i*10)
set @i=@i+1
end
go
select * from tab
godeclare @bDate datetime
declare @eDate datetimeset @bDate='2007-05-01'
set @eDate='2007-05-30'
select a.日期,a.销售额,[上月销售额]=b.销售额,[上两月销售额]=c.销售额
from tab a,
(select 日期=dateadd(month,1,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-1,@bDate) and dateadd(month,-1,@eDate)) k) b,
(select 日期=dateadd(month,2,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-2,@bDate) and dateadd(month,-2,@eDate)) k) c
where a.日期=b.日期 and a.日期=c.日期 and a.日期 between @bDate and @eDate
go
declare @eDate datetimeset @bDate='2007-05-01'
set @eDate='2007-05-30'
select a.日期,a.销售额,[上月销售额]=isnull(b.销售额,0),[上两月销售额]=isnull(c.销售额,0)
from tab a
left join
(select 日期=dateadd(month,1,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-1,@bDate) and dateadd(month,-1,@eDate)) k) b on a.日期=b.日期
left join
(select 日期=dateadd(month,2,日期),销售额 from (select 日期,销售额 from tab where 日期 between dateadd(month,-2,@bDate) and dateadd(month,-2,@eDate)) k) c on a.日期=c.日期
where a.日期 between @bDate and @eDate
go