楼主 LOGO |
Q:数据表中是2012年1-9月各类别货品的销售明细,如何在数据表的基础上统计出2012年各类别货品各月的销售数量及本年累计销售数量? 数据表:
期望结果:
A:可以用SQL语句创建数据透视表来实现- select month(日期)&'月' as 月份,类别,sum(销售数量) as 数量,'本月销售数量' as 标识 from [数据$] group by month(日期),类别
- union all
- select a.月份&'月',b.类别,sum(b.s) as 数量,'本年累计销售数量' as 标识 from (select month(日期) as 月份,类别,sum(销售数量) as s from [数据$] group by month(日期),类别) a,(select month(日期) as 月份,类别,sum(销售数量) as s from [数据$] group by month(日期),类别) b
- where a.类别=b.类别 and a.月份>=b.月份
- group by a.月份,b.类别
合与累.zip
- select * from (select month(日期) as 月份,类别,sum(销售数量) as 销售数量 from [数据$] group by month(日期),类别) a,(select month(日期) as 月份,类别,sum(销售数量) as 销售数量 from [数据$] group by month(日期),类别) b
- where a.类别=b.类别 and a.月份>=b.月份
- order by a.月份,b.月份
的结果如下图所示:
目测可知选取‘a.月份,b.类别,b.销售数量’列进行汇总就可以得出所需要的本年累计数了。 附件中的结果列用 ‘sum(销售数量) as s ’ 来代替 ‘sum(销售数量) as 销售数量’ 是为了缩短SQL语名的长度 |