按月份按部门查询统计问题
数据表如下:
合同编号 创建时间 部门
XXX1 2012-2-28 0:03:50 商用部
XXX2 2012-3-28 0:03:50 民用部
……………………
…………………………
………………………………
现在想使查询结果这样显示:第一列显示月份,第二、三列显示该部门当月合同数(没有合同显示为0)
月份 商用部 民用部
1 3 2
2 4 5
3 0 0
4 5 5
……
这个我觉得很复杂,头痛好久的。请大家帮帮忙!
[解决办法]
select 月份,count(合同)as 合同数,count(部门)as 部门数 from table group by 月份
[解决办法]
月份可以用month(创建时间)得到,也就是把上面的月份用这个换了,group by后面的也用这个换了
[解决办法]
SELECT 年,月,SUM(商用部合同数) 商用部合同数,SUM(民用部合同数) 民用部合同数 FROM (SELECT
YEAR(创建时间)年,MONTH(创建时间)月,
CASE WHEN 部门 ='商用部' THEN COUNT(*) ELSE 0 END 商用部合同数,
CASE WHEN 部门 ='民用部' THEN COUNT(*) ELSE 0 END 民用部合同数 FROM TABLE1
GROUP BY YEAR(创建时间),MONTH(创建时间),部门
) A
GROUP BY 年,月
GO
[解决办法]
SELECT 年,月,SUM(商用部合同数) 商用部合同数,SUM(民用部合同数) 民用部合同数 FROM (SELECT
YEAR(创建时间)年,MONTH(创建时间)月,
CASE WHEN 部门 ='商用部' THEN COUNT(*) ELSE 0 END 商用部合同数,
CASE WHEN 部门 ='民用部' THEN COUNT(*) ELSE 0 END 民用部合同数 FROM TABLE1
GROUP BY YEAR(创建时间),MONTH(创建时间),部门
) A
GROUP BY 年,月
GO
[解决办法]
我已经 测试 过了 ,可以达到你的要求。
[解决办法]