select 门店编码,商品编码,
     当日销量=sum(case when datediff(day,销售日期,'2007-12-01')=0 then xssl else 0 end),
     前1天销量=sum(case when datediff(day,销售日期,'2007-12-01')=1 then xssl else 0 end),
     前2天销量=sum(case when datediff(day,销售日期,'2007-12-01')=2 then xssl else 0 end),
     前3天销量=sum(case when datediff(day,销售日期,'2007-12-01')=3 then xssl else 0 end),
     上月销量=sum(case when datediff(month,销售日期,'2007-12-01')=1 then xssl else 0 end)
from tb
group by 门店编码,商品编码

解决方案 »

  1.   


    --上月可以理解为自然月和按当前日期的一个月,我这里按自然月理解
    declare @Today datetime
    declare @ProMonthFirstDay datetime
    declare @ProMonthLastDay datetimeset @Today=convert(varchar(10),getdate(),120)
    set @ProMonthFirstDay=convert(varchar(7),dateadd(month,-1,@Today),120)+'-01'
    set @ProMonthLastDay=dateadd(month,1,@ProMonthFirstDay)
    select mdid as 门店编码,
    spid as 商品编码,
    sum(case when date>=@Today and Date<dateadd(day,1,@Today) then xssl else 0 end) as 当日销量,
    sum(case when date>=dateadd(day,-1,@Today) and Date<@Today then xssl else 0 end) as 前1天销量,
    sum(case when date>=dateadd(day,-2,@Today) and Date<dateadd(day,-1,@Today) then xssl else 0 end) as 前2天销量,
    sum(case when date>=dateadd(day,-3,@Today) and Date<dateadd(day,-2,@Today) then xssl else 0 end) as 前3天销量,
    sum(case when date>=@ProMonthFirstDay and Date<@ProMonthLastDay then xssl else 0 end) as 上月销量
    from [table]
    where Date>=@ProMonthFirstDay
    and Date<dateadd(day,1,@Today)
    group by mdid,spid