net统计分析报表解决方案

上传人:第*** 文档编号:31074561 上传时间:2018-02-04 格式:DOCX 页数:20 大小:950.57KB
返回 下载 相关 举报
net统计分析报表解决方案_第1页
第1页 / 共20页
net统计分析报表解决方案_第2页
第2页 / 共20页
net统计分析报表解决方案_第3页
第3页 / 共20页
net统计分析报表解决方案_第4页
第4页 / 共20页
net统计分析报表解决方案_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《net统计分析报表解决方案》由会员分享,可在线阅读,更多相关《net统计分析报表解决方案(20页珍藏版)》请在金锄头文库上搜索。

1、.NET 统计分析报表解决方案 1-用户订购统计分析案例 前段时间接到很多报表的工作,现拿出一些小例子与大家分享。用户需求:运营商管理员:1. 以合作伙伴为维度对用户订购进行统计分析:a. 可对某一个合作伙伴进行分析,查看该合作伙伴下产品的用户订购在某个时间段内的发展趋势,需实现折线图、柱状图。b. 可对所有合作伙伴进行分析,对比在某段时间内所有合作伙伴下产品的用户订购发展量,查看在某段时间内所有合作伙伴下产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。2. 以产品为维度对用户订购进行统计分析:a. 可对某一个产品进行分析,查看该产品的用户订购在某个时间段内的发展趋势,需实现折

2、线图、柱状图。b. 可对所有产品进行分析,对比在某段时间内所有产品的用户订购发展量,查看在某段时间内所有产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。合作伙伴管理员:1. 以产品为维度对用户订购进行统计分析:a. 可对本公司下某一个产品进行分析,查看该产品的用户订购在某个时间段内的发展趋势,需实现折线图、柱状图。b. 可对本公司下所有产品进行分析,对比在某段时间内所有产品的用户订购发展量,查看在某段时间内所有产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。 时间需支持按年、按月统计。根据用户需求,我们可以开始进行实现。实现步骤:这里是用一个例子实现用户需求,没

3、有用到系统内的表,系统内的表有很多例子中不需要的字段,所以根据系统内表结构新建。1. 数据库数据表设计:合作伙伴表(CPInfo) 产品信息表(ProductInfo):用户订购表(UserOrderInfo):因为是移动的系统,所以用户订购是通过手机。 2. 统计分析表建立:由于现实系统数据量比较大,统计的数据也不是实时的,所以统计分析不直接在原始数据表上进行,这样我们就需要建立一个专门用来存放统计分析数据的表。用户订购统计分析表(UserOrderStat ):a. StatType 字段为报表类型,这里定义为:CP-按 CP 公司统计数据,Product-按产品统计数据b. TimeTy

4、pe 字段为时间类型,这里定义为:Year-按年统计数据,Month- 按月统计数据3. 统计分析存储过程建立:按年统计存储过程:IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(Ndbo.SP_UserOrderStatByYear) AND type in (NP, NPC)DROP PROCEDURE dbo.SP_UserOrderStatByYearGO-按年统计用户订购CREATE PROCEDURE SP_UserOrderStatByYearBeginYear INT, -开始年份EndYear I

5、NT -结束年份ASBEGIN DECLARE Temp_BeginYear INTDECLARE Temp_EndYear INTDECLARE BeginTime NVARCHAR(16)DECLARE EndTime NVARCHAR(16)SET Temp_BeginYear = BeginYearSET Temp_EndYear = EndYear + 1-判断结束年份是否为当前时间年份或大于当前时间年份IF EndYear = YEAR(GETDATE() SET Temp_EndYear = YEAR(GETDATE()SET BeginTime = CAST(Temp_Begi

6、nYear AS NVARCHAR(8) + -1-1SET EndTime = CAST(Temp_EndYear AS NVARCHAR(8) + -1-1-添加年统计数据INSERT INTO UserOrderStat(StatType,TimeType,Year,CPCode,CPChName,ProductCode,ProductName,OrderCount)-按 CP 公司统计SELECT CP, Year, YEAR(uoi.OrderTime), uoi.CPCode, MAX(c.CPChName), , , COUNT(0)FROM UserOrderInfo uoi

7、JOIN CPInfo c ON uoi.CPCode = c.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status = 1 AND uoi.OrderTime BeginTime AND uoi.OrderTime BeginTime AND uoi.OrderTime YEAR(GETDATE() OR (EndYear = YEAR(GETDATE() AND EndMonth MONTH(GETDATE()BEGINSET Temp_EndYear = YEAR(GETDATE()SET

8、Temp_EndMonth = MONTH(GETDATE()ENDSET BeginTime = CAST(Temp_BeginYear AS NVARCHAR(8) + - + CAST(BeginMonth AS NVARCHAR(8) + -1 SET EndTime = CAST(Temp_EndYear AS NVARCHAR(8) + - + CAST(EndMonth AS NVARCHAR(8) + -1-添加月统计数据INSERT INTO UserOrderStat(StatType,TimeType,Year,Month,CPCode,CPChName,ProductC

9、ode,ProductName,OrderCount)-按 CP 公司统计SELECT CP, Month, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime), uoi.CPCode, MAX(c.CPChName), , , COUNT(0)FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status = 1 AND uoi.OrderTime BeginTim

10、e AND uoi.OrderTime BeginTime AND uoi.OrderTime -1 AND EndYear -1 AND BeginYear = EndYear AND BeginMonth = -1 AND EndMonth = -1SET Time = , + CAST(BeginYear AS NVARCHAR(8) + 年 AS Time-如果年为时间条件,并且开始年与结束年不相等IF BeginYear -1 AND EndYear -1 AND BeginYear EndYear AND BeginMonth = -1 AND EndMonth = -1SET T

11、ime = , + CAST(BeginYear AS NVARCHAR(8) + 年 - + CAST(EndYear AS NVARCHAR(8) + 年 AS Time-如果年和月为时间条件,并且开始年与结束年相等,开始月与结束月相等IF BeginYear -1 AND EndYear -1 AND BeginYear = EndYear AND BeginMonth -1 AND EndMonth -1 AND BeginMonth = EndMonthSET Time = , + CAST(BeginYear AS NVARCHAR(8) + 年 + CAST(BeginMonth

12、 AS NVARCHAR(8) + 月 AS Time-如果年和月为时间条件,并且开始年与结束年相等或者开始年与结束年不相等,开始月与结束月不相等IF BeginYear -1 AND EndYear -1 AND BeginMonth -1 AND EndMonth -1 AND (BeginYear = EndYear AND BeginMonth EndMonth) OR (BeginYear EndYear AND BeginMonth EndMonth) SET Time = , + CAST(BeginYear AS NVARCHAR(8) + 年 + CAST(BeginMont

13、h AS NVARCHAR(8) + 月 - + CAST(EndYear AS NVARCHAR(8) + 年 + CAST(EndMonth AS NVARCHAR(8) + 月 AS TimeSET Field = Field + TimeSET Where = WHERE 1=1 -如果时间类型不为按时间范围查询IF TimeType AreaSET Where = Where + AND TimeType = + TimeType + -如果 StatType 不为空IF StatType AND StatType IS NOT NULLSET Where = Where + AND

14、 StatType = + StatType + -如果 CPCode 不为空IF CPCode AND CPCode IS NOT NULLSET Where = Where + AND CPCode = + CPCode + -如果 CPName 不为空IF CPName AND CPName IS NOT NULLSET Where = Where + AND CPName LIKE % + CPName + % -如果 ProductCode 不为空IF ProductCode AND ProductCode IS NOT NULLSET Where = Where + AND Pro

15、ductCode = + ProductCode + -如果 ProductName 不为空IF ProductName AND ProductName IS NOT NULLSET Where = Where + AND ProductName = % + ProductName + %IF BeginYear -1 AND EndYear -1SET Where = Where + AND (Year = + CAST(BeginYear AS NVARCHAR(8) + AND YEAR -1 AND EndMonth -1SET Where = Where + OR (Month = + CAST(BeginMonth AS NVARCHAR(8) + AND Month -1 AND EndY

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号