ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:896.71KB ,
资源ID:5962543      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5962543.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NET统计分析报表解决方案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

NET统计分析报表解决方案.docx

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

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

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

4、据b. TimeType字段为时间类型,这里定义为: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, -开始年份E

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

6、= CAST(Temp_BeginYear AS NVARCHAR(8) + -1-1 SET 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), , , CO

7、UNT(0) FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCode JOIN ProductInfo p ON uoi.ProductCode = p.ProductCode WHERE uoi.Status = 1 AND uoi.OrderTime BeginTime AND uoi.OrderTime BeginTime AND uoi.OrderTime YEAR(GETDATE() OR (EndYear = YEAR(GETDATE() AND EndMonth MONTH(GETDATE() BEGIN SET

8、 Temp_EndYear = YEAR(GETDATE() SET Temp_EndMonth = MONTH(GETDATE() END SET 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, Ti

9、meType, Year, Month, CPCode, CPChName, ProductCode, 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.CPCode JOIN ProductInfo p ON uoi.ProductCode = p.Produc

10、tCode WHERE uoi.Status = 1 AND uoi.OrderTime BeginTime AND uoi.OrderTime BeginTime AND uoi.OrderTime EndTime AND NOT EXISTS (SELECT 0 FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.ProductCode = uoi.ProductCode AND uos.Year = YEAR(uoi.OrderTime) AND uos.Month = MONTH(uoi.OrderTime) GRO

11、UP BY uoi.ProductCode, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime)ENDGO4. 新建数据库作业,用来定时执行年统计存储过程和月统计存储过程,一个用来执行月统计存储过程,计划为每月的1日零点执行。至此数据准备工作完成,现在开始着手设计报表。在例子中用三层架构的方式实现,分为UI层、业务逻辑层、数据访问层。5. 新建用户统计报表工程解决方案统计分析数据查询存储过程:-统计查询存储过程CREATE PROCEDURE dbo.SP_UserOrderStatQueryStatType NVARCHAR(32),TimeType NVAR

12、CHAR(32),BeginYear INT,EndYear INT,BeginMonth INT,EndMonth INT,CPCode NVARCHAR(32),CPName NVARCHAR(256),ProductCode NVARCHAR(32),ProductName NVARCHAR(256)ASBEGIN -查询字段 DECLARE Field NVARCHAR(512) -查询条件 DECLARE Where NVARCHAR(512) -按范围查询时间字段 DECLARE Time NVARCHAR(256) -分组 DECLARE Group NVARCHAR(256)

13、-排序 DECLARE Order NVARCHAR(256) -设置查询字段 SET Field = NMAX(SeqNo) AS SeqNo,MAX(StatType) AS StatType,MAX(TimeType) AS TimeType, MAX(Year) AS Year,MAX(Month) AS Month,MAX(CPCode) AS CPCode,MAX(CPChName) AS CPChName, MAX(ProductCode) AS ProductCode,MAX(ProductName) AS ProductName,MAX(OrderCount) AS Orde

14、rCount SET Time = -如果时间条件都未选择,则查询总时间段 IF BeginYear = -1 AND EndYear = -1 AND BeginMonth = -1 AND EndMonth = -1 SET Time = ,总时间段 AS Time -如果年为时间条件,并且开始年与结束年相等 IF BeginYear -1 AND EndYear -1 AND BeginYear = EndYear AND BeginMonth = -1 AND EndMonth = -1 SET Time = , + CAST(BeginYear AS NVARCHAR(8) + 年

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

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

17、eginMonth EndMonth) OR (BeginYear EndYear AND BeginMonth EndMonth) SET Time = , + CAST(BeginYear AS NVARCHAR(8) + 年 + CAST(BeginMonth AS NVARCHAR(8) + 月 - + CAST(EndYear AS NVARCHAR(8) + 年 + CAST(EndMonth AS NVARCHAR(8) + 月 AS Time SET Field = Field + Time SET Where = WHERE 1=1 -如果时间类型不为按时间范围查询 IF T

18、imeType Area SET Where = Where + AND TimeType = + TimeType + -如果StatType不为空 IF StatType AND StatType IS NOT NULL SET Where = Where + AND StatType = + StatType + -如果CPCode不为空 IF CPCode AND CPCode IS NOT NULL SET Where = Where + AND CPCode = + CPCode + -如果CPName不为空 IF CPName AND CPName IS NOT NULL SET

19、 Where = Where + AND CPName LIKE % + CPName + % -如果ProductCode不为空 IF ProductCode AND ProductCode IS NOT NULL SET Where = Where + AND ProductCode = + ProductCode + -如果ProductName不为空 IF ProductName AND ProductName IS NOT NULL SET Where = Where + AND ProductName = % + ProductName + % IF BeginYear -1 AN

20、D EndYear -1 SET Where = Where + AND (Year = + CAST(BeginYear AS NVARCHAR(8) + AND YEAR = + CAST(EndYear AS NVARCHAR(8) + ) IF BeginMonth -1 AND EndMonth -1 SET Where = Where + OR (Month = + CAST(BeginMonth AS NVARCHAR(8) + AND Month = + CAST(EndMonth AS NVARCHAR(8) + ) IF BeginYear -1 AND EndYear -

21、1 SET Where = Where + ) SET Group = GROUP BY IF StatType = CP SET Group = Group + CPCode IF StatType = Product SET Group = Group + ProductCode IF TimeType = Year SET Group = Group + ,Year IF TimeType = Month SET Group = Group + ,Month PRINT SELECT + Field + FROM UserOrderStat + Where + Group EXECUTE

22、 (SELECT + Field + FROM UserOrderStat + Where + Group)ENDGO数据访问类:UserOrderStatDAL.cs在这里用到了企业库进行数据库操作using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.Common;using Microsoft.Practices.EnterpriseLibrary.Data;namespace DAL public partial class UserOrderStatDAL / / 获取用户订购统计分析数据 / / 统计类型:CP-按CP统计,Product-按产品统计 / 时间类型:Year-按年统计,Month-按月统计,Area-按时间范围统计 / param name=be

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1