我现在要做个产品销售对比.要能这月的销售情况对比去年同期的销售情况以及对比上月的销售情况;
问题出来了,
我怎么去根据他这3个日期来查啊。
目前我只写了一个测试语句 如下:select 
(SELECT  c_short FROM xt_company c WHERE c.c_comcode=c_com) AS '店铺',
 convert(decimal(10,2),sum(c_number)) as '数量' 
from ls_retail 
where  c_arttypecode='01' 
and c_date BETWEEN '2003-11-11 00:00:00' AND '2008-11-15 23:59:59'
 GROUP BY c_arttypecode,c_com
我想要的效果如下:店铺             数量       数量       数量
花园路店 7716.00     5000       5000
隆海路店 4435.00     5000       5000
南阳路店 3262.00     5000       5000每个数量都是不同时期的销售数量。来位N人帮看下,一人回帖、全村关荣!

解决方案 »

  1.   


    select a.c_number 本月,b.c_number 去年,c.c_number 上月 from (select c_number from tb where 月份=本月 ) a inner (select c_number from tb where 月份=去年月) b inner (select c_number from tb where 月份=上月) c
      

  2.   


    select a.c_comcode,a.c_number 本月,b.c_number 去年,c.c_number 上月 from (select c_comcode,c_number from tb where 月份=本月 ) a inner (select c_comcode,c_number from tb where 月份=去年月) b on a.c_comcode=b.c_comcode inner (select c_comcode, c_number from tb where 月份=上月) c on b.c_comcode=c.c_comcode
      

  3.   

    Quote=引用 7 楼 subxli 的回复:]
    膜拜 . 
    [/Quote]
    哈哈.不要看长就膜拜 . 其实上面的是有问题的,一是忘了join,二是括号问题
    而且没有细看楼主的题意.再修改一下,供楼主参考
    select a.c_comcode,a.c_number 本月,b.c_number 去年,c.c_number 上月 from ((select c_comcode,c_number from tb where 月份=本月 ) a inner join (select c_comcode,c_number from tb where 月份=去年月) b on a.c_comcode=b.c_comcode ) inner join (select c_comcode, c_number from tb where 月份=上月) c on b.c_comcode=c.c_comcode
      

  4.   

    哈哈.不要看长就膜拜 . 其实上面的是有问题的,一是忘了join,二是括号问题
    而且没有细看楼主的题意.再修改一下,供楼主参考
    SQL code
    select a.c_comcode,a.c_number 本月,b.c_number 去年,c.c_number 上月 from ((select c_……
    [/Quote]学习
      

  5.   

    select a.c_comcode,a.本月,b.去年,c.上月 from ((select c_comcode,sum(c_number) 本月 from tb where 月份=本月 order by c_comcode ) a inner join (select c_comcode,sum(c_number) 去年 from tb where 月份=去年 order by c_comcode) b on a.c_comcode=b.c_comcode ) inner join (select c_comcode, sum(c_number) 上月 from tb where 月份=上月 order by c_comcode) c on b.c_comcode=c.c_comcode
      

  6.   

    我不明白 为什么你要用上c_comcode #24 他们不一个表滴
      

  7.   

    那只是随便写的,楼主明白意思就成了,也就是 店面的名称或代码.而且我给出的SQL代码没有 联合 店面表
    好比一毛坯房,使用的时候必须装修.
    另外上面代码中有一低级错误 order by  应该改为 group by
    另外,根据实际情况,inner join还可以改为 left outer join
    select a.c_com,a.本月,b.去年,c.上月 from ((select c_com,sum(c_number) 本月 from tb where 月份=本月 group by c_comcode ) a inner join (select c_com,sum(c_number) 去年 from tb where 月份=去年 group by c_comcode) b on a.c_com=b.c_com) inner join (select c_comcode, sum(c_number) 上月 from tb where 月份=上月 group by c_comcode) c on b.c_com=c.c_com