关于SQL查询报表,按月份显示出每月各个业务的办理量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SQL查询报表,按月份显示出每月各个业务的办理量相关的知识,希望对你有一定的参考价值。

各位好,我遇到一个问题,需要向大家请教一下。

有一张业务表A,里面存着银行每种业务的办理记录,比如有 基金业务、贷款业务、客服咨询

现在需要统计业务,按月份分组,并且统计出每月各种业务的办理量,
最后需要得到的结果如下:

月份 业务名 办理量
2015-01 基金业务 20
2015-01 贷款业务 34
2015-01 客服咨询 22

2015-02 基金业务 20
2015-02 贷款业务 34
2015-02 客服咨询 22

2015-03 基金业务 20
2015-03 贷款业务 34
2015-03 客服咨询 22

2015-04 基金业务 20
2015-04 贷款业务 34
2015-04 客服咨询 22

2015-05 基金业务 20
2015-05 贷款业务 34
2015-05 客服咨询 22

2015-06 基金业务 20
2015-06 贷款业务 34
2015-06 客服咨询 22
............................一直到12月

2015-12 基金业务 22
2015-12 贷款业务 321
2015-12 客服咨询 223

请问此类语句该怎么写?

参考技术A select  月份,业务名,sum( 办理量)  as 总办理量    from  业务表A 
group by   月份,业务名

参考技术B select [月份],[ 业务名],sum(isnull([办理量],0)) as [办理量]
  from [业务表A]
 group by [月份],[业务名]

参考技术C 用游标可以做,且简单追问

能不能大致描述一下思路? 游标用的不熟悉,还望指点

追答

我还是给你写条语句吧,更简单:
SELECT DATENAME(YEAR,日期)+'-'+DATENAME(MONTH,日期) 月份,
业务名,COUNT(*) 办理量
FROM 表
GROUP BY DATENAME(YEAR,日期)+'-'+DATENAME(MONTH,日期),业务名

本回答被提问者采纳
参考技术D 可以先生成一个时间表
然后做关联追问

能不能大致描述一下思路?

您的意思是先查询出表中所有时间作为临时表,然后做关联?

追答

新建一张时间表
时间表是可以初始化的
初始化成2005-01 2005-02 。。。

SQL按时间统计客户的月销售量和年销售量

我们单位要做一个销售表,以方便每月来进行报表统计工作。数据库是SQL2000的,因为之前有一套已经在用的数据库系统,里面存储了2年的销售数据,现在领导需要改动报表最终的显示结构。它有2个表的数据组成数据库表①结构如下:表名:基本数据字段:销售日期 单位名称 型号 类型 数量 单价 金额 业务员 部门 运输方式数据库表②结构如下:
表名:用户回款 字段:销售日期 客户名称 回款金额 业务员 部门注意:表①中的单位名称与表②中的客户名称是相同的。都是客户的名称。表②中的销售日期应该是回款的日期,与表①的销售日期不一样。领导要求查询上月的26号到本月的25号这一个月期间每个客户的本月销售量、以及本月销售金额,本月回款金额,本年累计销售量(比如2009年1月1日-2009年12月31日一个客户的累计销量),本年累计销售金额,本年累计回款额,总销量(比如这个客户从若干年前一直到现在的总销量),总销售金额,总回款额,年度总销量(就是2009年一年所有客户的总销量加在一起),年度总销售额,年度总回款 就是这样的一个要求!!出来的报表如下:

select a.单位名称,a.本月销量,a.本月销售金额,b.本月回款金额,c.本年累计销售量,c.本年累计销售金额,d.本年累计回款金额,
e.总销量,e.总销售金额,f.总回款金额,g.年度总销量,g.年度总销售金额,h.年度总回款金额 from
(select 1 as 编号,单位名称,sum(数量) as 本月销量,sum(金额) as 本月销售金额 from 基本数据 where 销售日期 between '2009-07-26' and '2009-08-25' group by 单位名称) a
inner join
(select 客户名称,sum(回款金额) as 本月回款金额 from 用户回款 where 销售日期 between '2009-07-26' and '2009-08-25' group by 客户名称) b on a.单位名称=b.客户名称
inner join
(select 单位名称,sum(数量) as 本年累计销售量,sum(金额) as 本年累计销售金额 from 基本数据 where 销售日期 between '2009-01-01' and '2009-12-31' group by 单位名称) c on a.单位名称=c.单位名称
inner join
(select 客户名称,sum(回款金额) as 本年累计回款金额 from 用户回款 where 销售日期 between '2009-01-01' and '2009-12-31' group by 客户名称) d on a.单位名称=d.客户名称
inner join
(select 单位名称,sum(数量) as 总销量,sum(金额) as 总销售金额 from 基本数据) e on a.单位名称=e.单位名称
inner join
(select 客户名称,sum(回款金额) as 总回款金额 from 用户回款) f on a.单位名称=f.客户名称
inner join
(select 1 as 编号,sum(数量) as 年度总销量,sum(金额) as 年度总销售金额 from 基本数据 where 销售日期 between '2009-01-01' and '2009-12-31') g on a.编号=g.编号
inner join
(select 1 as 编号,sum(回款金额) as 年度总回款金额 from 用户回款 where 销售日期 between '2009-01-01' and '2009-12-31') h on a.编号=h.编号
参考技术A 发个表脚本上来,省得我去建表了,就是 create tabel的那个

以上是关于关于SQL查询报表,按月份显示出每月各个业务的办理量的主要内容,如果未能解决你的问题,请参考以下文章

mysql 统计每月的数量 sql

SQL:当某些月份没有记录时,如何查询每月总和的平均值?

SQL 查询每个月统计的数据。

SQL按时间统计客户的月销售量和年销售量

按时间范围确定的每月计数

为报告编写 SQL 查询有何不同?