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
分享到:
相关推荐
存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
存储过程概述 创建存储过程 执行存储过程 查看、重命名和删除存储过程 创建带有参数的存储过程
破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程破解存储过程
db2存储过程db2存储过程db2存储过程db2存储过程db2存储过程db2存储过程db2存储过程db2存储过程db2存储过程
分页存储过程 分页存储过程 分页存储过程 sql代码
阅读实验教材《SQL Server 2012数据库管理与开发》第137页到155页的内容,掌握存储过程的概念、了解存储过程的类别(系统存储过程,用户自定义存储过程,扩展存储过程);掌握存储过程的建立;掌握存储过程的两种...
birt报表中调用存储过程的方法. 目录 1. 概述 3 2. BIRT支持的存储过程返回值类型 3 3. BIRT调用存储过程的语法 4 4. 创建存储过程数据源/集 4 5. 在BIRT中使用存储过程 5 调用返回单结果集的存储过程。 5 调用...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
oracle 存储过程实例 oracle存储过程实例
高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程高效分页存储过程
db2 存储过程 db2 存储过程 db2 存储过程
内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...
SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...
可以将SQL Server存储过程转为oracle存储过程的工具
java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程java 调用存储过程
资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...
SAP HANA 中调试存储过程 SAP HANA 中调试存储过程 SAP HANA 中调试存储过程
odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问存储过程/C++ odbc访问...
存储过程参数查看器存储过程助手 存储过程参数查看器存储过程助手