求按月统计的sql语句

t_kong 发布于 2013/12/04 11:04
阅读 632
收藏 1

有三个表:

T_BM(部门表)
bm_id(部门ID) bm_name(部门名称)
A001 衣物
A002 数码产品

T_YG(员工表)
yg_id(员工ID) bm_id(部门ID) yg_name(员工姓名) yg_phone(员工电话)
B001 A001 B1 12345678
B002 A001 B2 12345679
B003 A002 B3 12345680
B004 A002 B4 12345681

T_XL(日销售量表)
bm_id(部门ID) yg_id(员工ID) sell(销量) all_day(统计日期)
A001 B001 2 2013-1-1
A001 B002 5 2013-1-1
A002 B003 4 2013-1-1
A002 B004 1 2013-1-1
A001 B002 2 2013-1-2
A002 B003 2 2013-1-2
A001 B001 7 2013-1-4
A001 B001 4 2013-1-5
A001 B002 4 2013-1-5
A002 B003 5 2013-1-5
A002 B004 6 2013-1-5
A001 B001 2 2013-2-1
A001 B002 5 2013-2-1
A002 B003 4 2013-2-1
A002 B004 1 2013-2-1

可否将结果统计成为:


部门 月份 月销量 员工姓名 员工电话
数码产品 201301 11 B3 12345680
数码产品 201301 7 B4 12345681
数码产品 201302 4 B3 12345680
数码产品 201302 1 B4 12345681


通常遇到这种问题,我是用了比较愚蠢的方法,就是:

select sum(a.sell) 月销量,b.yg_name 员工名,b.yg_phone 员工电话
from T_XL a,T_YG b
where a.bm_id='A002' and a.yg_id=b.yg_id and all_day between '2013-1-1' and '2013-2-1'
group by b.yg_name,b.yg_phone
用上面的sql语句,一个月,一个月的去统计。

所以请问,有没有更好的方法。能一次性的得到上面想要的结果。


加载中
0
寒熊
寒熊
select convert(char(6),all_day) 年月,sum(a.sell) 月销量,b.yg_name 员工名,b.yg_phone 员工电话
from T_XL a,T_YG b
where a.bm_id='A002' and a.yg_id=b.yg_id 
--and all_day between '2013-1-1' and '2013-2-1'
group by b.yg_name,b.yg_phone,convert(char(6),all_day,112)

这个是在sqlserve里面,其他数据库类似,把all_day 字段格式化成年月格式就行。



0
JustForFly
JustForFly
对于日期,我建议你可以用 to_date 转换成 YYYYMM的格式,然后将转换后的日期放到group by里面。
返回顶部
顶部