传入参数:

@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

选择生成日报表,月报表,年报表相关推荐

  1. 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表

    在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的需求,特别是在一些ASP.NET网站中,有时候我们并不能保证Web服务器上一定安装了Office组件,所以使用微软的Offi ...

  2. 年终,使用 Python 汇总各月开发的报表数量

    2021,已经过去了.在整理当年工作输出时,想量化下当年开发的报表数量,以及看下上半年集成数据后,报表开发的工作占比是否下降. 想了下,可以用项目组下个人目录下的各月报表数量,来量化下上述情况. 思路 ...

  3. 葡萄城报表介绍:复杂报表

    葡萄城报表介绍:复杂报表 什么是复杂报表? 日常生活中,我们需要填写各式各样的表格(报表),仔细观察就会发现,大多数的表格需要填写很多信息,而且表结构也没有规律可循,这类报表统称为复杂报表. 比如,有 ...

  4. python报表设计工具_报表自动化,三流用Excel,二流用Python,一流用它

    从事数据工作的人都知道,企业每天都要做很多报表,这个过程当中会涉及到很多手工操作和常规性报表.为了减少人工介入,节省工作时间,我们会想办法将一部分操作用工具或代码来替代,这个过程就称为报表自动化. 报 ...

  5. 葡萄城报表介绍:交叉报表

    葡萄城报表介绍:交叉报表 什么是交叉报表? 交叉报表是一种基本的报表样式,是一种行.列方向都有分组的报表. 以下表为例,产品销售数据分析表,行按产品品类分组,列按时间分组,便于查看某个特定时段.某个特 ...

  6. ActiveReports 报表应用教程 (15)---报表换肤

    在 ActiveReports 中,可以设置报表中不同控件的样式,然后把这些样式保存到一个外部的XML文件当中,供其他报表使用.如果用户希望同一份报表以不用的外观分发,只需要简单地修改样式表单,无需逐 ...

  7. 葡萄城发布新版ActiveReports 9报表控件和报表服务器

    2019独角兽企业重金招聘Python工程师标准>>> 2014年11月10日---葡萄城宣布正式发布ActiveReports 9,包含了三种报表模型:RDL报表.页面报表.区域报 ...

  8. birt 报表与润乾报表对比

    BIRT,全称Business Intelligence and Reporting Tools,是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,它的特点在于以 Java 和 Jav ...

  9. 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验

    前一段时间,被导师安排对报表开发工具做调研,之后就一度泡在各大博客.论坛里,尽可能全面的搜集了几款报表工具的优缺点,攒成了<java报表工具报表软件选型经验总结分享>.不过大多都是直接抄的 ...

最新文章

  1. plt.acorr()函数使用实例-ValueError: object too deep for desired array
  2. HBase 6、用Phoenix Java api操作HBase
  3. SpringBoot rest映射及源码解析
  4. TIDB事务过大transction too large解决方法
  5. ExtJs五(ExtJs Mvc登录优化)
  6. 2021牛客暑期多校训练营7,签到题FHI
  7. 2021机动车检测站签字授权人检验标准部分考试题库及答案
  8. php换脸,PS换脸术 蒙娜丽莎图片换脸教程
  9. android vr sdk 架构,PowerVR图形SDK v4.0及工具终于问世
  10. 五个核心能力打造普惠金融商业化发展模式
  11. 2021年美国联邦法定假日表
  12. 假设你有8个球,其中一个略微重一些,但是找出这个球的唯一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?
  13. LARS回归算法的几何意义
  14. 守望先锋显示服务器异常,守望先锋错误代码含义及解决方法
  15. [SQL]行转列和列转行
  16. 双剑合璧保障数据库安全
  17. linux ps -ef命令输出详解,Linux-ps命令学习
  18. netmap pkt-gen程序代码分析
  19. html, css学习笔记,自用(B站黑马程序员pink老师)
  20. MTTR/MTTF/MTBF图解

热门文章

  1. 四层网络模型指什么?【YYT】
  2. 洛谷P1010 幂次方(递归算法)
  3. 洛谷-P1010-幂次方-普及(摁写+递归/二进制+递归)
  4. Python file
  5. 一款堪称完美的编程字体Source Code Pro
  6. 如何利用百度图片搜索进行引流?原理是怎样的?
  7. 关于给平板装win系统的装了两天的问题
  8. 2021-2027全球与中国实时操作系统市场现状及未来发展趋势
  9. php灵云翻译,灵云维汉友谊桥:业界领先维汉翻译技术
  10. jquery slider_使用jQuery UI Slider创建音量控制器