首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

同期销售比较SQL语句

2012-01-13 
求一个同期销售比较SQL语句.现有以下一个表日期销售额2007-1-11002007-1-290....2007-1-31802007-2-180200

求一个同期销售比较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

热点排行