选择生成日报表,月报表,年报表
传入参数:
@Type:类型,是哪一种报表,有year,month,day三种
@Time:时间
根据Type参数分别获取Time的月份数据,日期数据
declare @Type nvarchar(20) ='year';declare @Time DateTime =getdate();SELECT distinct case @Type when 'year' then format(dateadd(mm,number,@Time),'MM月')when 'month' then format(dateadd(dd,number,@Time),'dd日')else format(dateadd(dd,number,@Time),'dd日') end DTFROM master..spt_valuesWHERE type='P' and ((@Type='day' and number<1) or (@Type!='day' and number<50))
年的时候显示12个月
月的时候显示该月的天数
日的时候就显示该天
注意上面的日的时候,进行判断,number<1
先查出这个,然后与数据库中表left join
declare @Type nvarchar(20) ='month';declare @Time DateTime =getdate();select case @Type when 'year' then format(CreateTime,'MM月')when 'month' then format(CreateTime,'dd日')else format(CreateTime,'dd日') end DT2,Sum(isnull(ElectricalLaborHour,0)+isnull(ElectricalParts,0)+isnull(SheetSprayLaborHour,0)+isnull(SheetSprayParts,0)+isnull(SheetSprayTransLaborHour,0)+isnull(OilChangeLaborHour,0)+isnull(OilChangeParts,0)+isnull(WarrantyLaborHour,0)+isnull(WarrantyParts,0)+isnull(WarrantyTransLaborHour,0)+isnull(InternalElectricalLaborHour,0)+isnull(InternalParts,0)+isnull(InternalSheetSprayLaborHour,0)) as Total from T_DMSMaintenance where IsDelete=0 and ((@Type='year' and datepart(yyyy,CreateTime)=datepart(yyyy,@Time)) or(@Type='month' and format(CreateTime,'yyyy年MM月')=format(@Time,'yyyy年MM月')) or(@Type='day' and format(CreateTime,'yyyy-MM-dd')=format(@Time,'yyyy-MM-dd')))group by case @Type when 'year' then format(CreateTime,'MM月')when 'month' then format(CreateTime,'dd日')else format(CreateTime,'dd日') end
看上面的查询条件
or,and联合使用,并且根据具体的Type参数进行分组
然后再将两个表进行连接
declare @Type nvarchar(20) ='month';declare @Time DateTime =getdate();select DT,Total from (SELECT distinct case @Type when 'year' then format(dateadd(mm,number,@Time),'MM月')when 'month' then format(dateadd(dd,number,@Time),'dd日')else format(dateadd(dd,number,@Time),'dd日') end DTFROM master..spt_valuesWHERE type='P' and ((@Type='day' and number<1) or (@Type!='day' and number<50))) as T1 left join(select case @Type when 'year' then format(CreateTime,'MM月')when 'month' then format(CreateTime,'dd日')else format(CreateTime,'dd日') end DT2,Sum(isnull(ElectricalLaborHour,0)+isnull(ElectricalParts,0)+isnull(SheetSprayLaborHour,0)+isnull(SheetSprayParts,0)+isnull(SheetSprayTransLaborHour,0)+isnull(OilChangeLaborHour,0)+isnull(OilChangeParts,0)+isnull(WarrantyLaborHour,0)+isnull(WarrantyParts,0)+isnull(WarrantyTransLaborHour,0)+isnull(InternalElectricalLaborHour,0)+isnull(InternalParts,0)+isnull(InternalSheetSprayLaborHour,0)) as Total from T_DMSMaintenance where IsDelete=0 and ((@Type='year' and datepart(yyyy,CreateTime)=datepart(yyyy,@Time)) or(@Type='month' and format(CreateTime,'yyyy年MM月')=format(@Time,'yyyy年MM月')) or(@Type='day' and format(CreateTime,'yyyy-MM-dd')=format(@Time,'yyyy-MM-dd')))group by case @Type when 'year' then format(CreateTime,'MM月')when 'month' then format(CreateTime,'dd日')else format(CreateTime,'dd日') end) as T2 on T1.DT=T2.DT2
例子:
--报表类型,年报,月报,日报declare @Type nvarchar(20) ='month'; --需要查看的报表的时间,如果是年报就2016-01-01 月报就2016-08-01,因为2016-08不能转换成日期格式,只有年的话就可以的declare @Time DateTime =cast('2016-02-24' as DateTime);--销售员IDdeclare @SalesID nvarchar(500)='F248611C-CB39-4806-919E-71DCD085D208';--公司IDdeclare @CompanyID nvarchar(500)='C04B3AE6-1866-4490-9D73-FAB0DB121F12';--按报表类型查询出x轴数据 with ta as (SELECT distinct case @Typewhen 'year' then format(dateadd(mm,number,@Time),'MM月')when 'month' then format(dateadd(dd,number,@Time),'dd日')else format(dateadd(hh,number,@Time),'HH时')end DTFROM master..spt_valuesWHERE type='P' and ((@Type='day' and number<25) or (@Type!='day' and number<50))),--具体查询的数据信息tb as (select CreateTime as Time from T_OrderInfo where OrderBargainType=1 and CustomerID in (select CustomerID from T_CustomerInfo where CompanyID=@CompanyID and (@SalesID='' or cast(SalesID as nvarchar(500))= @SalesID))),--按照报表类型进行转换tc as (select case @Typewhen 'year' then format(Time,'MM月')when 'month' then format (Time,'dd日')else format(Time,'HH时') end Time from tb where (@Type='year' and datepart(year,Time)=datepart(year,@Time)) or(@Type='month' and convert(varchar(7),Time,120)=convert(varchar(7),@Time,120)) or(@Type='day' and convert(varchar(10),Time,120)=convert(varchar(10),@Time,120)) )--最后joinselect ta.DT,isnull(b.Num,0) as Num from ta left join (select Time,Num=Count(1) from tc group by Time) b on ta.DT=b.Time
选择生成日报表,月报表,年报表相关推荐
- 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表
在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求,特别是在一些ASP.NET网站中,有时候我们并不能保证Web服务器上一定安装了Office组件,所以使用微软的Offi ...
- 年终,使用 Python 汇总各月开发的报表数量
2021,已经过去了.在整理当年工作输出时,想量化下当年开发的报表数量,以及看下上半年集成数据后,报表开发的工作占比是否下降. 想了下,可以用项目组下个人目录下的各月报表数量,来量化下上述情况. 思路 ...
- 葡萄城报表介绍:复杂报表
葡萄城报表介绍:复杂报表 什么是复杂报表? 日常生活中,我们需要填写各式各样的表格(报表),仔细观察就会发现,大多数的表格需要填写很多信息,而且表结构也没有规律可循,这类报表统称为复杂报表. 比如,有 ...
- python报表设计工具_报表自动化,三流用Excel,二流用Python,一流用它
从事数据工作的人都知道,企业每天都要做很多报表,这个过程当中会涉及到很多手工操作和常规性报表.为了减少人工介入,节省工作时间,我们会想办法将一部分操作用工具或代码来替代,这个过程就称为报表自动化. 报 ...
- 葡萄城报表介绍:交叉报表
葡萄城报表介绍:交叉报表 什么是交叉报表? 交叉报表是一种基本的报表样式,是一种行.列方向都有分组的报表. 以下表为例,产品销售数据分析表,行按产品品类分组,列按时间分组,便于查看某个特定时段.某个特 ...
- ActiveReports 报表应用教程 (15)---报表换肤
在 ActiveReports 中,可以设置报表中不同控件的样式,然后把这些样式保存到一个外部的XML文件当中,供其他报表使用.如果用户希望同一份报表以不用的外观分发,只需要简单地修改样式表单,无需逐 ...
- 葡萄城发布新版ActiveReports 9报表控件和报表服务器
2019独角兽企业重金招聘Python工程师标准>>> 2014年11月10日---葡萄城宣布正式发布ActiveReports 9,包含了三种报表模型:RDL报表.页面报表.区域报 ...
- birt 报表与润乾报表对比
BIRT,全称Business Intelligence and Reporting Tools,是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,它的特点在于以 Java 和 Jav ...
- 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验
前一段时间,被导师安排对报表开发工具做调研,之后就一度泡在各大博客.论坛里,尽可能全面的搜集了几款报表工具的优缺点,攒成了<java报表工具报表软件选型经验总结分享>.不过大多都是直接抄的 ...
最新文章
- plt.acorr()函数使用实例-ValueError: object too deep for desired array
- HBase 6、用Phoenix Java api操作HBase
- SpringBoot rest映射及源码解析
- TIDB事务过大transction too large解决方法
- ExtJs五(ExtJs Mvc登录优化)
- 2021牛客暑期多校训练营7,签到题FHI
- 2021机动车检测站签字授权人检验标准部分考试题库及答案
- php换脸,PS换脸术 蒙娜丽莎图片换脸教程
- android vr sdk 架构,PowerVR图形SDK v4.0及工具终于问世
- 五个核心能力打造普惠金融商业化发展模式
- 2021年美国联邦法定假日表
- 假设你有8个球,其中一个略微重一些,但是找出这个球的唯一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?
- LARS回归算法的几何意义
- 守望先锋显示服务器异常,守望先锋错误代码含义及解决方法
- [SQL]行转列和列转行
- 双剑合璧保障数据库安全
- linux ps -ef命令输出详解,Linux-ps命令学习
- netmap pkt-gen程序代码分析
- html, css学习笔记,自用(B站黑马程序员pink老师)
- MTTR/MTTF/MTBF图解