读书人

同期销售比较SQL语句

发布时间: 2012-01-13 22:43:29 作者: rapoo

求一个同期销售比较SQL语句.
现有以下一个表
日期 销售额
2007-1-1 100
2007-1-2 90
. .
. .
2007-1-31 80

2007-2-1 80
2007-2-2 90
. .
. .
2007-2-28 80

2007-3-1 90
2007-3-2 70
. .
. .
2007-3-31 70
2007-4-1 90
2007-4-2 80
. .
. .
2007-4-30 100

2007-5-1 50
2007-5-2 80
. .
. .
2007-5-31 120
现在如果要给定一个查询区间2007-5-1 到2007-5-31,如果要得到以下结果SQL语句应该怎么写?请各位高手指教了

日期 销售额 上月销售额 上两月销售额 上三月销售额
2007-5-1 50 90 90 80
2007-5-2 80 80 70 90
. . . . .


. . . . .
2007-5-31 120 0 70 0



[解决办法]
declare @bDate datetime
declare @eDate datetime

set @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

读书人网 >SQL Server

热点推荐