sql 查所有货物月份的销售量
【问题】
有一个表里面有各种货物每天的销售量.
table
时间 销量
2014-01-01 15:20:25 3
2014-02-21 16:11:23 2
2015-01-05 11:14:21 1
2015-02-11 15:21:11 2
希望得到的数据格式如下:
月份 2014年销量 2015年销量
1 3 1
2 2 2
3 0 0
4 0 0
5 0 0
【回答】
上述问题,如果数据齐全,按年,月分组统计销量后,通过pivot行列互换即可,但如果数据不全,比如月份不全,比如年度是动态的,那么这个数据用sql整理起来就复杂了,下面具体来看用SPL是如何做的:
A |
B |
|
1 |
$select year(时间) 年,month(时间) 月,sum(销量) 销量 from tb group by 年,月 |
|
2 |
=A1.id(年) |
|
3 |
=A1.align@a(12,月) |
|
4 |
=create(月份,${A2.(string(~)+"年销量").concat@c()}) |
|
5 |
for A3 |
>A4.record(#A5|A2.(ifn(A5.select@1(年==A2.~).销量,0))) |
A1:通过sql按照年,月分组统计销量
A2:取年度的唯一值
A3:将A1按照12个月对齐
A4:按月份,2014年销量、2015年销量…创建空序表
A5-B5:对A3循环,将每个月份,各年度的销量依次填入序表A4中