日期:2014-05-17  浏览次数:20461 次

sql 按月求和
A表记录的是每天各员工生成了多少产品,现想按月显示出各个员工每个月生产了多少,不知道sql怎么写。
如:Table A:
ID  员工ID  日期             生成数量
1    001   2013-01-01      30
2    001   2013-01-03      20
3    002   2013-01-02      50
4    001   2013-02-01      20

查询的结果应该是:
ID  员工ID  月份             生成总数
1    001   2013-01         80
2    002   2013-01         20
3    001   2013-02         20

请大侠帮忙

------解决方案--------------------

select ID=row_number()over(order by getdate()),
[员工ID] ,'月份'=substring([月份],1,7),'生成总数'=sum([生成总数])
from A表 with(nololck)
where 筛选条件
group by [员工ID] ,substring([月份],1,7)

------解决方案--------------------
select row_number() over (order by 月份) as ID,* from 
(
select  员工ID,月份 = convert(nvarchar(7),月份,25),生成总数 = sum(生产数量)
from tb
group by 员工ID,convert(nvarchar(7),月份,25)
)t