`
zhuyx808
  • 浏览: 123370 次
  • 性别: Icon_minigender_1
  • 来自: 快来看~天上米有灰机
社区版块
存档分类
最新评论

搞了几天的存储过程

阅读更多

CREATE procedure R_GzReport_financeTotal
 @YearNum varchar(20)
as
 set @YearNum =ltrim(Rtrim(@YearNum))
begin
 select  @YearNum as YearNum
  
 into table1






 select * from table1
 for xml auto

 create table #temp(
  DeptID  int,
  DeptName varchar(50),
  DeptSequence int,
  [month] int,
  month1 int,
  month2 int,
  month3 int,
  month4 int,
  month5 int,
  month6 int,
  month7 int,
  month8 int,
  month9 int,
  month10 int,
  month11 int,
  month12 int
  )
    insert into #temp
 select distinct(pm.DeptID),
  pm.DeptName,
  pm.DeptSequence,
  month(gr.GatherDate) as [month],
  (select isnull(sum(convert(int,gr.GatherMoney)),'')  where month(gr.GatherDate)=1 ),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=2),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=3),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=4),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=5),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=6),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=7),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=8),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=9),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=10),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=11),
  (select isnull(sum(convert(int,gr.GatherMoney)),'') where month(gr.GatherDate)=12)
  
 from GatheringRecord gr,Person_Main pm
 where year(gr.GatherDate)=@YearNum
  and ConfirmDate is not NULL
  and gr.perID=pm.id
 group by pm.DeptSequence,pm.DeptID,pm.DeptName,month(gr.GatherDate)
 order by pm.DeptSequence,month(gr.GatherDate)
 
 select
  DeptName,
  avg(DeptSequence)as [sequence],
  isnull(avg(month1),0) as getmoney1,
  isnull(avg(month2),0) as getmoney2,
  isnull(avg(month3),0)  as getmoney3,
  isnull(avg(month4),0)  as getmoney4,
  isnull(avg(month5),0)  as getmoney5,
  isnull(avg(month6),0)  as getmoney6,
  isnull(avg(month7),0)  as getmoney7,
  isnull(avg(month8),0)  as getmoney8,
  isnull(avg(month9),0)  as getmoney9,
  isnull(avg(month10),0)  as getmoney10,
  isnull(avg(month11),0)  as getmoney11,
  isnull(avg(month12),0)  as getmoney12
  
 from #temp
 group by DeptName



























































 order by avg(DeptSequence) for xml raw


 drop table #temp,table1

end

GO
所有获得收入的部门的年总表(分部门和月份排列)

 

 

 

 

优化后的~~~

 

CREATE procedure R_GzReport_financeTotal
 @YearNum varchar(20)
as
 set @YearNum =ltrim(Rtrim(@YearNum))
begin
 select  @YearNum as YearNum
  
 into table1






 select * from table1
 for xml auto
  

 --创建临时表存放数据
 create table #temp(
  DeptSequence int,
  DeptID int,
  DeptName varchar(50),
  gmm int,
  summon int)
 
 insert into #temp
 
 select pm.deptsequence DeptSequence,
  pm.deptid DeptID,
  pm.deptname DeptName,
  month(gr.GatherDate) gmm,
  isnull(sum(convert(int,gr.GatherMoney)),'') summon
 from person_main pm,gatheringrecord gr














 where year(gr.GatherDate)=@YearNum
  and ConfirmDate is not NULL
  and gr.perID=pm.id
 group by pm.DeptSequence,pm.DeptID,pm.DeptName,month(gr.GatherDate)
 
 
 SELECT DeptID,
  DeptSequence,
  DeptName,
  [getmoney1]=isnull(SUM(CASE gmm WHEN '1' THEN summon END),0),--列转行,n月份表示成getmoney[n]的形式
  [getmoney2]=isnull(SUM(CASE gmm WHEN '2' THEN summon END),0),
  [getmoney3]=isnull(SUM(CASE gmm WHEN '3' THEN summon END),0),
  [getmoney4]=isnull(SUM(CASE gmm WHEN '4' THEN summon END),0),
  [getmoney5]=isnull(SUM(CASE gmm WHEN '5' THEN summon END),0),
  [getmoney6]=isnull(SUM(CASE gmm WHEN '6' THEN summon END),0),
  [getmoney7]=isnull(SUM(CASE gmm WHEN '7' THEN summon END),0),
  [getmoney8]=isnull(SUM(CASE gmm WHEN '8' THEN summon END),0),
  [getmoney9]=isnull(SUM(CASE gmm WHEN '9' THEN summon END),0),
  [getmoney10]=isnull(SUM(CASE gmm WHEN '10' THEN summon END),0),
  [getmoney11]=isnull(SUM(CASE gmm WHEN '11' THEN summon END),0),
  [getmoney12]=isnull(SUM(CASE gmm WHEN '12' THEN summon END),0)
 FROM #temp
 GROUP BY DeptID,DeptSequence,DeptName
 order by DeptSequence for xml raw























 drop table #temp,table1

end
GO

分享到:
评论

相关推荐

    SAP HANA 中调试存储过程

    SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...

    db2 存储过程语法与实例

    DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...

    存储过程文档--mysql

    存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...

    PostgreSQL 存储过程调试

    本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...

    实验9 存储过程的创建和使用

    实验9主要围绕存储过程的创建、使用、查看、修改和删除等核心概念展开,这是数据库管理系统中的重要组成部分,尤其在SQL Server中具有广泛的应用。存储过程是一组预先编写的SQL语句,它允许用户像调用函数一样重复...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    SQL_Server存储过程调试指南

    资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...

    SQL Server存储过程对比工具

    SQL Server存储过程对比工具是一种高效且实用的软件解决方案,它专为数据库管理员和开发人员设计,用于比较和分析两个SQL Server数据库中的存储过程。这款工具的主要功能是帮助用户快速识别和定位不同数据库间存储...

    java调用存储过程(含out参数)

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...

    INFORMIX存储过程手册

    ### INFORMIX存储过程手册概览 #### 存储过程概念与作用 存储过程是一种预编译的SQL脚本或程序,它驻留在数据库中,能够执行一系列复杂的数据库操作,如数据检索、更新、事务处理等。在Informix环境下,存储过程...

    SQLServer存储过程调用WebService

    ### SQL Server 存储过程中调用 WebService 的实现方法 #### 一、引言 在企业级应用开发中,Web Service 作为一种标准的接口技术,被广泛用于不同平台之间的服务交互。而在 SQL Server 数据库中直接调用 Web ...

    DB2存储过程开发权威指南.存储过程学习速成教程

    DB2存储过程是数据库管理中的一个重要概念,它们是预编译的SQL语句集合,可以在数据库服务器上执行复杂的业务逻辑,提高数据处理效率,并提供安全的访问控制。本指南将深入探讨DB2存储过程的开发,帮助你快速掌握这...

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    实验六:创建存储过程和触发器1

    实验六的目的是深入理解并掌握SQL Server中的存储过程和触发器。存储过程是预编译的SQL语句集合,它们可以被多次调用,提高了代码的重用性和执行效率,同时降低了网络流量。以下是关于存储过程和触发器的详细解释: ...

    存储过程生成工具存储过程生成工具

    在IT行业中,存储过程是数据库管理系统(DBMS)中预编译的SQL语句集合,它们可以被看作是数据库中的可重用函数,用于执行特定的数据库操作。存储过程生成工具则是帮助开发者自动化创建、修改和管理这些过程的软件。...

Global site tag (gtag.js) - Google Analytics