当前位置: 代码迷 >> Sql Server >> SQL怎么分组
  详细解决方案

SQL怎么分组

热度:103   发布时间:2016-04-24 08:45:54.0
SQL如何分组求助
本帖最后由 chinawwl2008 于 2015-11-11 16:43:32 编辑
select a.classcode,
       a.classname,
       SUM(b.actualmoney) as '2014销售',
       COUNT(distinct b.flowno) as '2014客流',
       SUM(b.actualmoney)/COUNT(distinct b.flowno) as '2014客单'
  from inf_goodsclass a,
       acc_goodsflow b
 where a.classcode = LEFT(b.gdssalecode,4)
   and a.classcode < '9000'
   and b.saletime >= '2014-11-08 00:00'
   and b.saletime <= '2014-11-09 23:59'
group by a.classcode,a.classname
order by a.classcode



如何把2015年的销售,客流,客单给直接查询到后面
------解决思路----------------------
您条件写的就是14年的,15年的只能在拼接一下了。

select a.classcode,
       a.classname,
       a.[2014销售],
       a.[2014客流],
       a.[2014客单],
       b.[2015销售],
       b.[2015客流],
       b.[2015客单]
       from
       (
select a.classcode,
       a.classname,
       SUM(b.actualmoney) as '2014销售',
       COUNT(distinct b.flowno) as '2014客流',
       SUM(b.actualmoney)/COUNT(distinct b.flowno) as '2014客单'
  from inf_goodsclass a,
       acc_goodsflow b
 where a.classcode = LEFT(b.gdssalecode,4)
   and a.classcode < '9000'
   and b.saletime >= '2014-11-08 00:00'
   and b.saletime <= '2014-11-09 23:59'
group by a.classcode,a.classname
) a
left join 
(
select a.classcode,
       a.classname,
       SUM(b.actualmoney) as '2015销售',
       COUNT(distinct b.flowno) as '2015客流',
       SUM(b.actualmoney)/COUNT(distinct b.flowno) as '2015客单'
  from inf_goodsclass a,
       acc_goodsflow b
 where a.classcode = LEFT(b.gdssalecode,4)
   and a.classcode < '9000'
   and b.saletime >= '2015-01-01 00:00'
   and b.saletime <= '2015-12-31 23:59'
group by a.classcode,a.classname
) b on a.classcode=b.classcode

------解决思路----------------------
convert(decimal(18,2), ROUND(字段名, 2))
  相关解决方案