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
分享到:
相关推荐
在IT领域,尤其是在数据库管理与优化中,存储过程的解锁是一项关键技能,尤其对于Oracle数据库而言。当存储过程被锁定时,可能会影响系统的性能和稳定性,因此掌握如何解锁存储过程至关重要。以下是对“oracle存储...
SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...
1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...
在IT行业中,数据库操作是日常开发中的重要环节,而存储过程是数据库中一种高效、封装性强的预编译语句集合。本问题涉及到的是在PowerBuilder(简称Pb)环境中如何调用Oracle或SQL Server等数据库中的存储过程。以下...
Informatica调用存储过程图文流程 Informatica 是一款功能强大的数据集成工具,能够帮助用户快速、可靠地集成各种数据源。调用存储过程是 Informatica 中的一种常用功能,下面将详细介绍 Informatica 调用存储过程...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...
ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...
SQL Server存储过程是一种预编译的SQL代码集合,它们允许数据库开发者封装复杂的业务逻辑和数据操作,提高数据库应用的性能和可维护性。然而,由于存储过程的源代码通常是不可见的,对于需要查看或修改这些过程的...
分页存储过程 分页存储过程 分页存储过程 sql代码
在使用解密存储过程时,需要注意以下几点: * 请确保您拥有足够的权限来访问和修改存储过程。 * 请确保您已经备份了数据库,以免在解密过程中出现错误。 * 请确保您已经了解解密存储过程的原理和实现机制,以免出现...
可以将SQL Server存储过程转为oracle存储过程的工具
本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...
PL/SQL Developer 调试存储过程及调试包中创建的存储过程 PL/SQL Developer 调试存储过程是指使用 PL/SQL Developer 工具来调试 Oracle 数据库中的存储过程。调试存储过程可以帮助开发者快速地定位和解决存储过程...
在SQL存储过程中,有以下几个重要的知识点: 1. **定义与创建**:存储过程可以通过`CREATE PROCEDURE`语句来创建,用户可以指定输入参数、输出参数或两者皆有,以满足不同的调用需求。例如: ```sql CREATE ...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
使用SAP HANA存储过程有以下几个显著优点: 1. **减少网络和处理器负载**:对于数据密集型操作(如聚合),大量数据不必传输至应用服务器,从而减少了网络流量和CPU负荷。 2. **支持多结果集返回**:HANA存储过程...
在帆软报表的设计过程中,当用户尝试调用一个Oracle数据库中的存储过程时,可能会遇到一个问题:即使存储过程本身并未声明任何输入或输出参数,设计界面仍会提示需要提供一个名为"storeParameter1"的参数。...