表格模板-NET统计分析报表解决方案 精品

合集下载

在NET中不安装Office使用EPPlus生成带图表的Excel报表优秀文档

在NET中不安装Office使用EPPlus生成带图表的Excel报表优秀文档

在NET中不安装Office使用EPPlus生成带图表的Excel报表优秀文档(可以直接使用,可编辑实用优质文档,欢迎下载)在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求,特别是在一些 网站中,有时候我们并不能保证Web服务器上一定安装了Office组件,所以使用微软的Office来生成Excel 并不保证在所有情况下都使用,有时候即使Web服务器上安装了Office也会出现一些运行权限方面的原因到导致调用Excel组件生成Excel失败,所以在这里介绍一种无需安装Office并且无需较高权限就能生成Excel的方法。

EPPlus简介在介绍EPPlus之前,首先要介绍一下Office Open XML。

以下文字来自于维基百科(,有删节):Office Open XML(缩写:Open XML、OpenXML或OOXML),是由Microsoft开发的一种以XML为基础并以ZIP格式压缩的电子文件,支持Word、Excel、Office Note、PPT等文件格式。

OOXML在2006年12月成为了ECMA规范的一部分,编号为ECMA-376;并于2021年4月国际标准化组织(ISO)的表決,在两个月公布为ISO/IEC 29500国际标准。

从Microsoft Office 2007开始,Office Open XML文件格式已经成为Microsoft Office默认的文件格式。

Microsoft Office 2021支持对ECMA-376标准文档的读操作,ISO/IEC 29500 Transitional的读/写,ISO/IEC 29500 Strict的读取。

Microsoft Office 2021同时支持ISO/IEC 29500 Strict的读写操作。

EPPlus就是一个通过Open XML方式来读写Office文件的开源.NET类库,所以使用它生成Office文件完全不需要Microsoft Office(当然如果你需需要查看生成的文件就需要Office了)。

统计情况汇报表格

统计情况汇报表格

统计情况汇报表格尊敬的领导:根据公司要求,我对最近一段时间的统计情况进行了汇报,具体情况如下:一、销售统计情况。

根据最新数据统计,本月销售额较上月同比增长了5%,达到了600万元,其中线上销售占比增加到了30%。

通过市场调研和客户反馈,我们发现了一些产品的潜在需求,计划在下个季度进行新品推广,以进一步提升销售额。

二、客户满意度调查。

我们对近期客户进行了满意度调查,结果显示客户满意度达到了85%,相比上季度有所提升。

客户普遍对我们的产品质量和售后服务表示满意,但也提出了一些改进建议,比如加强产品宣传和推广,提高售后响应速度等。

我们将结合客户反馈,进一步优化服务,提升客户满意度。

三、员工绩效考核。

本季度员工绩效考核结果显示,员工整体绩效较上季度有所提升,其中销售团队和客服团队表现突出。

同时,我们也发现了一些员工的工作瓶颈和问题,计划在下个季度加强培训和指导,提升整体团队绩效。

四、市场竞争情况。

经过市场调研和竞品分析,我们发现了一些竞争对手的新动态和市场趋势。

我们将加强对竞争对手的监测和分析,及时调整市场策略,保持竞争优势。

五、产品质量统计。

本季度产品质量统计显示,产品合格率达到了95%,相比上季度有所提升。

但仍有一些产品存在质量问题,我们将加强生产过程管控,提高产品质量,确保产品达到客户标准。

六、市场营销推广效果。

本季度市场营销推广效果良好,我们通过线上线下渠道开展了多种促销活动,取得了良好的市场反馈。

同时,我们也发现了一些推广渠道的效果不佳,计划在下个季度进行调整,提升推广效果。

七、财务费用统计。

本季度财务费用统计显示,公司整体财务状况良好,费用控制得当,利润率有所提升。

但也发现了一些成本支出较高的项目,我们将进行成本分析和管理,优化财务结构,提高盈利能力。

总结,通过以上统计情况汇报,公司整体运营状况良好,但也存在一些问题和挑战。

我们将结合汇报结果,进一步完善各项工作,提升公司整体竞争力和盈利能力。

统计表格模板

统计表格模板

统计表格模板统计表格是一种常见的数据展示形式,它可以清晰地展示数据的变化趋势、对比关系和分布规律。

在工作和学习中,我们经常需要使用统计表格来整理和展示数据,因此掌握一些常用的统计表格模板是非常有必要的。

本文将介绍几种常见的统计表格模板,希望能对大家有所帮助。

一、基本统计表格模板。

基本统计表格模板是最常见的一种,它通常包括表头、行标题、列标题和数据区域四个部分。

表头一般用于说明整个表格的主题,行标题和列标题用于标识各行和各列的内容,数据区域则用于填写具体的数据。

基本统计表格模板通用性强,适用于各种类型的数据展示。

二、柱状图统计表格模板。

柱状图统计表格模板是用于展示数据对比关系的一种表格形式。

它通常包括一个柱状图和一个数据表格,柱状图用于直观地展示各个数据的大小对比,数据表格用于具体展示每个数据的数值。

柱状图统计表格模板适用于展示不同数据之间的对比关系,能够直观地反映数据的差异。

三、折线图统计表格模板。

折线图统计表格模板是用于展示数据变化趋势的一种表格形式。

它通常包括一个折线图和一个数据表格,折线图用于展示数据随时间变化的趋势,数据表格用于具体展示每个时间点的数据数值。

折线图统计表格模板适用于展示数据随时间变化的规律,能够清晰地反映数据的变化趋势。

四、饼状图统计表格模板。

饼状图统计表格模板是用于展示数据分布规律的一种表格形式。

它通常包括一个饼状图和一个数据表格,饼状图用于展示各个数据所占比例的大小,数据表格用于具体展示每个数据的百分比。

饼状图统计表格模板适用于展示数据的分布规律,能够清晰地反映各个数据在整体中所占比例。

五、交叉表统计表格模板。

交叉表统计表格模板是用于展示两个或多个变量之间关系的一种表格形式。

它通常包括行变量、列变量和数据区域三个部分,行变量和列变量用于标识各行和各列的内容,数据区域用于填写具体的数据。

交叉表统计表格模板适用于展示两个或多个变量之间的关系,能够清晰地反映不同变量之间的交叉情况。

.net导出excel的四种方法及评测

.net导出excel的四种方法及评测

一、概述在日常工作和生活中,我们经常会遇到需要导出Excel表格的情况,无论是数据分析报告、财务报表还是客户清单,Excel都是非常常见的工具。

而对于使用.net框架的开发人员来说,如何在程序中实现Excel 导出也是一个常见的需求。

本文将介绍四种常见的.net导出Excel的方法,并对它们进行评测,以便开发人员在实际项目中选择最合适的方案。

二、利用Microsoft.Office.Interop.Excel进行导出1. 使用COM组件操作ExcelMicrosoft.Office.Interop.Excel是.NET对Excel COM组件的封装,开发人员可以通过这个组件来操作Excel。

通过这种方法,可以实现对Excel表格的创建、读取、修改和导出。

2. 优点a. 功能丰富:可以实现对Excel表格的各种操作,包括格式设置、数据写入等。

b. 灵活性高:可以实现对Excel表格的各种定制操作,满足不同需求。

3. 缺点a. 依赖性强:需要安装Office软件,才能在服务器上执行。

b. 性能低:由于是通过COM组件进行操作,性能相对较低,特别是在大数据量的情况下。

三、利用NPOI库进行导出1. 使用NPOI库NPOI是一个.NET操作Office文件的开源库,支持对Excel、Word、PowerPoint的读写操作。

通过NPOI库,开发人员可以对Excel表格进行创建、读取、修改和导出。

2. 优点a. 轻量级:NPOI库较轻量,不需要依赖Office软件。

b. 跨评台性:NPOI库可以在Windows、Linux和MacOS等操作系统上使用。

3. 缺点a. API复杂:相对于Microsoft.Office.Interop.Excel,NPOI库的API设计相对复杂。

b. 功能相对局限:相对于Microsoft.Office.Interop.Excel,NPOI库的功能相对局限一些。

四、利用EPPlus库进行导出1. 使用EPPlus库EPPlus是一个用于操作Excel文件的开源库,可以在.NET环境下实现对Excel表格的创建、读取、修改和导出。

财务部门报表数据统计精品图表PPT模板

财务部门报表数据统计精品图表PPT模板
样式 1
样式 2
说明:
这图表你可以根据你的内容适当增加或减少内容,使其与你的内容相适应,颜色板式以及文字均可修改,希望对你有所帮助。
添加文本信息
样式 1
样式 2
说明:
这图板式以及文字均可修改,希望对你有所帮助。
样式 1
样式 2
说明:
数 据
001
变动费用总额(万元)
4,325
002
单位变动费用
1,662
003
固定费用总额(万元)
2,865
004
利润计算
005
销售收入净额(万元)
6,061
006
单位销售收入净额(平均)
2,329
007
营业利润(万元)
1,129
008
盈亏平衡点产销量(千升)
42,954
009
盈亏平衡点产能利用率(%)
第一内容:建议先将您的内容整理到幻灯片后再进行编辑美化处理
第二板式:建议商务报告演讲板式采用16:9或16:10的板式设计
第三颜色:非特殊报告,建议颜色不多于四种,根据主题选用颜色系列
第四模块:商务报告讲求简洁大方大气,因此幻灯片中各内容模块模板
合理利用搭配,幻灯片中的文字经提炼后一般不多于200字
样式 1
样式 2
说明:
这图表你可以根据你的内容适当增加或减少内容,使其与你的内容相适应,颜色板式以及文字均可修改,希望对你有所帮助。
队列
员工
姓名
工作量
平均时长
此处添加文本
5001
张一凡
31
178.71
5002
李晓丽
42
207.48
5003

C#NET使用DotNetCharting控件生成报表统计图总结

C#NET使用DotNetCharting控件生成报表统计图总结

.NET使用DotNetCharting控件生成报表统计图总结在做项目时要对数据进行统计分析,所以必须生成一些报表统计图(如柱形图、饼图、曲线图等),网上强烈推荐了使用DotNetCharting控件来实现,于是自己对DotNetCharting控件进行了简单的学习,下面先简单介绍一下DotNetCharting控件及其使用。

DotNetCharting是一个非常棒的.NET图表控件,对中文支持非常好,而且操作方便,开发快速,既有for webform 也有for winform的,而且.net1.1和2.0都有支持。

它的官方地址是/本站也提供了DotNetCharting破解版本下载: 附件: dotnetCHARTING.rar(下载36次)强烈推荐一下DotNetCharting的demo地址:这个是所有的 DEMO 演示/demo.aspx这个是 Online Documentation/documentation/v4_4/webframe.html里面会有详细的说明和用法。

DotNetCharting的简单使用方法:1.把\bin\dotnetCHARTING.dll添加到工具箱,并且添加引用;2.把控件拖到你的网页上,然后添加引用using dotnetCHARTING;就可以用了;3.接下来是自己写的对DotNetCharting操作的封装类,以便于在程序里调用。

ShowData.csing System;ing System.Data;ing System.Text;ing dotnetCHARTING;5.space plexQuery7.{8. /**//// <summary>9. /// 彭建军10. /// 根据数据动态生成图形(柱形图、饼图、曲线图)11. /// 2008-06-1912. /// </summary>13. public class ShowData14. {15.16.属性#region 属性17. private string _phaysicalimagepath;//图片存放路径18. private string _title; //图片标题19. private string _xtitle;//图片x座标名称20. private string _ytitle;//图片y座标名称21. private string _seriesname;//图例名称22. private int _picwidth;//图片宽度23. private int _pichight;//图片高度24. private DataTable _dt;//图片数据源25.26. /**//// <summary>27. /// 图片存放路径28. /// </summary>29. public string PhaysicalImagePath30. {31. set{_phaysicalimagepath=value;}32. get{return _phaysicalimagepath;}33. }34. /**//// <summary>35. /// 图片标题36. /// </summary>37. public string Title38. {39. set{_title=value;}40. get{return _title;}41. }42. /**//// <summary>43. /// 图片标题44. /// </summary>45. public string XTitle46. {47. set{_xtitle=value;}48. get{return _xtitle;}49. }50. /**//// <summary>51. /// 图片标题52. /// </summary>53. public string YTitle54. {55. set{_ytitle=value;}56. get{return _ytitle;}57. }58.59. /**//// <summary>60. /// 图例名称61. /// </summary>62. public string SeriesName63. {64. set{_seriesname=value;}65. get{return _seriesname;}66. }67. /**//// <summary>68. /// 图片宽度69. /// </summary>70. public int PicWidth71. {72. set{_picwidth=value;}73. get{return _picwidth;}74. }75. /**//// <summary>76. /// 图片高度77. /// </summary>78. public int PicHight79. {80. set{_pichight=value;}81. get{return _pichight;}82. }83. /**//// <summary>84. /// 图片数据源85. /// </summary>86. public DataTable DataSource87. {88. set{_dt=value; }89. get{return _dt;}90. }91. #endregion92.93.构造函数#region 构造函数94. public ShowData()95. {96. //97. // TODO: 在此处添加构造函数逻辑98. //99. }100.101. public ShowData(stringPhaysicalImagePath,string Title,string XTitle,stringYTitle,string SeriesName)102. {103. _phaysicalimagepath=PhaysicalImagePath; 104. _title=Title;105. _xtitle=XTitle;106. _ytitle=YTitle;107. _seriesname=SeriesName;108. }109. #endregion110.111.输出柱形图#region 输出柱形图112. /**//// <summary>113. /// 柱形图114. /// </summary>115. /// <returns></returns>116. public void CreateColumn(dotnetCHARTING.Chart chart)117. {118. chart.Title=this._title;119. bel.Text=this._xtitle; 120. bel.Text=this._ytitle; 121. chart.TempDirectory=this._phaysicalimagepath;122. chart.Width = this._picwidth;123. chart.Height = this._pichight;124. chart.Type =bo ;125. chart.Series.Type =SeriesType.Cylinder; 126. =this._seriesname;127. chart.Series.Data = this._dt;128. chart.SeriesCollection.Add();129. chart.DefaultSeries.DefaultElement.ShowV alue = true;130. chart.ShadingEffect = true;131. e3D = false;132. chart.Series.DefaultElement.ShowValue =true;133. }134. #endregion135.136.输出饼图#region 输出饼图137. /**//// <summary>138. /// 饼图139. /// </summary>140. /// <returns></returns>141. public void CreatePie(dotnetCHARTING.Chart chart)142. {143. chart.Title=this._title;144. chart.TempDirectory=this._phaysicalimagepath;145. chart.Width = this._picwidth;146. chart.Height = this._pichight;147. chart.Type =ChartType.Pie;148. chart.Series.Type =SeriesType.Cylinder; 149. =this._seriesname;150.151. chart.ShadingEffect = true;152. e3D = false;153. chart.DefaultSeries.DefaultElement.Trans parency = 20;154. chart.DefaultSeries.DefaultElement.ShowV alue = true;155. chart.PieLabelMode =PieLabelMode.Outside;156. chart.SeriesCollection.Add(getArrayData( ));157. chart.Series.DefaultElement.ShowValue = true;158. }159.160. private SeriesCollection getArrayData()161. {162. SeriesCollection SC = newSeriesCollection();163. DataTable dt = this._dt;164.165. for(int i=0; i < dt.Rows.Count; i++) 166. {167. Series s = new Series();168. =dt.Rows[0].ToString();169.170. Element e = new Element();171.172. // 每元素的名称173. = dt.Rows[0].ToString(); 174.175. // 每元素的大小数值176. e.YValue=Convert.ToInt32(dt.Rows[1 ].ToString());177.178. s.Elements.Add(e);179. SC.Add(s);180. }181. return SC;182. }183. #endregion184.185.输出曲线图#region 输出曲线图186. /**//// <summary>187. /// 曲线图188. /// </summary>189. /// <returns></returns>190. public void CreateLine(dotnetCHARTING.Chart chart)191. {192. chart.Title=this._title;193. bel.Text=this._xtitle; 194. bel.Text=this._ytitle; 195. chart.TempDirectory=this._phaysicalimagepath;196. chart.Width = this._picwidth;197. chart.Height = this._pichight;198. chart.Type =bo ;199. chart.Series.Type =SeriesType.Line; 200. =this._seriesname;201. chart.Series.Data = this._dt;202. chart.SeriesCollection.Add();203. chart.DefaultSeries.DefaultElement.ShowV alue = true;204. chart.ShadingEffect = true;205. e3D = false;206. chart.Series.DefaultElement.ShowValue =true;207. }208. #endregion209.210.调用说明及范例#region 调用说明及范例211. // 在要显示统计图的页面代码直接调用,方法类似如下:212. //213.// ShowData show=new ShowData();214.// show.Title ="2008年各月消费情况统计";215.// show.XTitle ="月份";216.// show.YTitle ="金额(万元)";217.// show.PicHight =300;218.// show.PicWidth =600;219.// show.SeriesName ="具体详情";220.// show.PhaysicalImagePath ="ChartImages";221.// show.DataSource =this.GetDataSource();222.// show.CreateColumn(this.Chart1);223. #endregion224.225. }226.}复制代码效果图展示:1、饼图2、柱形图3、曲线图补充:帖子发了一天,没人回答我多维统计图的实现方式,只好自己去dotnetcharting的官方网站下载了最新的dotnetcharting控件,在dotnetcharting控件的使用说明文档中详细地介绍了各种多维统计图的实现方式。

年度费用查询统计分析报表Excel模板

年度费用查询统计分析报表Excel模板

1月2月3月4月5月6月2463847544859658887月8月9月10月11月12月1,401684685478363296办公费伙食费水电费差旅费运输费服务费3354365256783961,401招待费包材费耗材费交际费福利费其他费666785469965657777日期内容费用类型金额经办人备注日期内容费用类型金额经办人备注2023/7/1办公费3352023/1/1服务费2462023/7/2伙食费4362023/2/1服务费3842023/7/3水电费5252023/3/1服务费7542023/7/4差旅费6782023/4/1服务费4852023/7/5运输费3962023/5/1服务费9652023/7/6服务费6242023/6/1服务费8882023/7/7招待费6662023/7/1服务费7772023/7/8包材费7852023/8/1服务费6842023/7/9耗材费4692023/9/1服务费6852023/7/10交际费9652023/10/1服务费4782023/7/11福利费6572023/11/1服务费3632023/7/12其他费7772023/12/1服务费296服务费7,6292023年7月8,090年度费用查询统计分析报表5001,0001,5001月2月3月4月5月6月7月8月9月10月11月12月服务费5001,0001,500办公费伙食费水电费差旅费运输费服务费招待费包材费耗材费交际费福利费其他费2023年7月。

问题汇总报告表格

问题汇总报告表格

问题汇总报告表格问题编号问题描述问题类型优先级状态1 网站无法访问技术问题高处理中2 注册页面显示错误界面问题中待处理3 支付页面卡顿性能问题低待处理4 密码重置邮件未发送功能问题中已解决5 商品列表排序错误功能问题低待处理问题详情问题1: 网站无法访问问题描述:用户反馈无法访问网站,提示网络连接超时。

重启电脑和路由器后问题仍然存在。

问题类型:技术问题优先级:高状态:处理中问题2: 注册页面显示错误问题描述:用户在注册页面发现部分文字乱码,影响了用户注册信息的填写。

问题类型:界面问题优先级:中状态:待处理问题3: 支付页面卡顿问题描述:用户在支付页面遇到卡顿现象,导致无法成功完成支付。

问题类型:性能问题优先级:低状态:待处理问题4: 密码重置邮件未发送问题描述:用户申请重置密码后,未收到重置密码邮件。

问题类型:功能问题优先级:中状态:已解决问题5: 商品列表排序错误问题描述:用户在商品列表页面发现排序功能无法正常工作,排序结果与用户的期望不符。

问题类型:功能问题优先级:低状态:待处理解决方案问题1: 网站无法访问尝试通过以下步骤解决问题: 1. 检查网络连接是否正常。

2. 重启电脑和路由器。

3. 如果问题仍然存在,联系系统管理员或网络运营商寻求帮助。

问题2: 注册页面显示错误解决方案待定,需要界面设计师进行页面排版和字体设置的调整。

问题3: 支付页面卡顿解决方案待定,需要开发人员对支付页面的代码进行优化,提升页面加载速度。

问题4: 密码重置邮件未发送问题已解决,用户申请重置密码后,系统发送了重置密码邮件给用户。

问题可能是用户邮箱设置了垃圾邮件过滤,导致邮件被自动归类到垃圾邮件文件夹。

问题5: 商品列表排序错误解决方案待定,需要开发人员对商品列表页面的排序功能进行修复和测试。

总结通过对问题汇总表格的分析,我们可以看到目前系统存在一些技术问题、界面问题、性能问题和功能问题。

其中,网站无法访问和支付页面卡顿是比较紧急的问题,需要尽快解决;注册页面显示错误和商品列表排序错误也需要被关注并及时处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前段时间接到很多报表的工作,现拿出一些小例子与大家分享。

用户需求:运营商管理员:1. 以合作伙伴为维度对用户订购进行统计分析:a. 可对某一个合作伙伴进行分析,查看该合作伙伴下产品的用户订购在某个时间段内的发展趋势,需实现折线图、柱状图。

b. 可对所有合作伙伴进行分析,对比在某段时间内所有合作伙伴下产品的用户订购发展量,查看在某段时间内所有合作伙伴下产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。

2. 以产品为维度对用户订购进行统计分析:a. 可对某一个产品进行分析,查看该产品的用户订购在某个时间段内的发展趋势,需实现折线图、柱状图。

b. 可对所有产品进行分析,对比在某段时间内所有产品的用户订购发展量,查看在某段时间内所有产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。

合作伙伴管理员:1. 以产品为维度对用户订购进行统计分析:a. 可对本公司下某一个产品进行分析,查看该产品的用户订购在某个时间段内的发展趋势,需实现折线图、柱状图。

b. 可对本公司下所有产品进行分析,对比在某段时间内所有产品的用户订购发展量,查看在某段时间内所有产品的用户订购发展量在订购总量中所占比例,需实现柱状图、饼状图。

时间需支持按年、按月统计。

根据用户需求,我们可以开始进行实现。

实现步骤:这里是用一个例子实现用户需求,没有用到系统内的表,系统内的表有很多例子中不需要的字段,所以根据系统内表结构新建。

1. 数据库数据表设计:合作伙伴表(CPInfo)产品信息表(ProductInfo):用户订购表(UserOrderInfo):因为是移动的系统,所以用户订购是通过手机。

2. 统计分析表建立:由于现实系统数据量比较大,统计的数据也不是实时的,所以统计分析不直接在原始数据表上进行,这样我们就需要建立一个专门用来存放统计分析数据的表。

用户订购统计分析表(UserOrderStat):a. StatType字段为报表类型,这里定义为:CP-按CP公司统计数据,Product-按产品统计数据b. TimeType字段为时间类型,这里定义为:Year-按年统计数据,Month-按月统计数据3. 统计分析存储过程建立:按年统计存储过程:IF EXISTS (SELECT*FROM sys.objects WHERE object_id=OBJECT_ID(N'[dbo].[SP_UserOrderStatByYear]') AND type in (N'P', N'PC'))DROP PROCEDURE[dbo].[SP_UserOrderStatByYear]GO--按年统计用户订购CREATE PROCEDURE SP_UserOrderStatByYear@BeginYear INT, --开始年份@EndYear INT--结束年份ASBEGINDECLARE@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_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), '', '', COUNT(0)FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status =1AND uoi.OrderTime >@BeginTime AND uoi.OrderTime <@EndTime AND NOT EXISTS (SELECT0FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.Year=YEAR(uoi.OrderTime))GROUP BY uoi.CPCode, YEAR(uoi.OrderTime)UNION--按产品统计SELECT'Product', 'Year', YEAR(uoi.OrderTime), MAX(uoi.CPCode),MAX(c.CPChName), uoi.ProductCode, MAX(p.ProductName), COUNT(0)FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status =1AND uoi.OrderTime >@BeginTime AND uoi.OrderTime <@EndTime AND NOT EXISTS (SELECT0FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.ProductCode = uoi.ProductCode AND uos.Year=YEAR(uoi.OrderTime))GROUP BY uoi.ProductCode, YEAR(uoi.OrderTime)ENDGO按月统计存储过程:IF EXISTS (SELECT*FROM sys.objects WHERE object_id=OBJECT_ID(N'[dbo].[SP_UserOrderStatByMonth]') AND type in (N'P', N'PC'))DROP PROCEDURE[dbo].[SP_UserOrderStatByMonth]GO--按月统计用户订购CREATE PROCEDURE SP_UserOrderStatByMonth@BeginYear INT, --开始年份@BeginMonth INT, --开始月份@EndYear INT, --结束年份@EndMonth INT--结束月份ASBEGINDECLARE@Temp_BeginYear INTDECLARE@Temp_BeginMonth INTDECLARE@Temp_EndYear INTDECLARE@Temp_EndMonth INTDECLARE@BeginTime NVARCHAR(16)DECLARE@EndTime NVARCHAR(16)SET@Temp_BeginYear=@BeginYearSET@Temp_BeginMonth=@BeginMonthSET@Temp_EndYear=@EndYearSET@Temp_EndMonth=@EndMonth+1--判断结束年份是否大于当前时间年份,当前月份是否为1月或者判断结束年份是否等于当前时间年份,结束月份是否大于当前时间月份IF@EndYear>YEAR(GETDATE()) OR (@EndYear=YEAR(GETDATE()) AND@EndMonth> MONTH(GETDATE()))BEGINSET@Temp_EndYear=YEAR(GETDATE())SET@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,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.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status =1AND uoi.OrderTime >@BeginTime AND uoi.OrderTime <@EndTime AND NOT EXISTS (SELECT0FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.Year=YEAR(uoi.OrderTime) AND uos.Month=MONTH(uoi.OrderTime))GROUP BY uoi.CPCode, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime)UNION--按产品统计SELECT'Product', 'Month', YEAR(uoi.OrderTime), MONTH(uoi.OrderTime),MAX(uoi.CPCode), MAX(c.CPChName), uoi.ProductCode, MAX(p.ProductName), COUNT(0) FROM UserOrderInfo uoi JOIN CPInfo c ON uoi.CPCode = c.CPCodeJOIN ProductInfo p ON uoi.ProductCode = p.ProductCodeWHERE uoi.Status =1AND uoi.OrderTime >@BeginTime AND uoi.OrderTime <@EndTime AND NOT EXISTS (SELECT0FROM UserOrderStat uos WHERE uos.CPCode = uoi.CPCode AND uos.ProductCode = uoi.ProductCode AND uos.Year=YEAR(uoi.OrderTime) AND uos.Month=MONTH(uoi.OrderTime))GROUP BY uoi.ProductCode, YEAR(uoi.OrderTime), MONTH(uoi.OrderTime)ENDGO4. 新建数据库作业,用来定时执行年统计存储过程和月统计存储过程,一个用来执行月统计存储过程,计划为每月的1日零点执行。

相关文档
最新文档