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为存储过程提供了...
DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...
本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
实验9主要围绕存储过程的创建、使用、查看、修改和删除等核心概念展开,这是数据库管理系统中的重要组成部分,尤其在SQL Server中具有广泛的应用。存储过程是一组预先编写的SQL语句,它允许用户像调用函数一样重复...
在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
SQL Server存储过程对比工具是一种高效且实用的软件解决方案,它专为数据库管理员和开发人员设计,用于比较和分析两个SQL Server数据库中的存储过程。这款工具的主要功能是帮助用户快速识别和定位不同数据库间存储...
在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或需要高效数据操作时。本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的...
### INFORMIX存储过程手册概览 #### 存储过程概念与作用 存储过程是一种预编译的SQL脚本或程序,它驻留在数据库中,能够执行一系列复杂的数据库操作,如数据检索、更新、事务处理等。在Informix环境下,存储过程...
### SQL Server 存储过程中调用 WebService 的实现方法 #### 一、引言 在企业级应用开发中,Web Service 作为一种标准的接口技术,被广泛用于不同平台之间的服务交互。而在 SQL Server 数据库中直接调用 Web ...
DB2存储过程是数据库管理中的一个重要概念,它们是预编译的SQL语句集合,可以在数据库服务器上执行复杂的业务逻辑,提高数据处理效率,并提供安全的访问控制。本指南将深入探讨DB2存储过程的开发,帮助你快速掌握这...
Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
实验六的目的是深入理解并掌握SQL Server中的存储过程和触发器。存储过程是预编译的SQL语句集合,它们可以被多次调用,提高了代码的重用性和执行效率,同时降低了网络流量。以下是关于存储过程和触发器的详细解释: ...
在IT行业中,存储过程是数据库管理系统(DBMS)中预编译的SQL语句集合,它们可以被看作是数据库中的可重用函数,用于执行特定的数据库操作。存储过程生成工具则是帮助开发者自动化创建、修改和管理这些过程的软件。...