sql server和oracle语法问题
金蝶云社区-BacktotheSea
BacktotheSea
0人赞赏了该文章 884次浏览 未经作者许可,禁止转载编辑于2015年11月02日 17:15:50

附:sql server

alter proc proc1
@year1 as int,
@moth1 as int,
@dep1 as varchar(100),
@emp1 as varchar(100)
as
set nocount on

select
-- row_number() over (order by a.fid)
-- 序号,
YEAR(a.FCREATEDATE) 年份,month(a.FCREATEDATE) 月份,ISNULL(g.FNAME,' ') 部门,
ISNULL(e.FNAME,' ') 员工,
sum(j.FOrgAmount) 实际值,
sum(i.F_XXQ_AMOUNT) 计划值,
case when sum(i.F_XXQ_AMOUNT)=0 then 0 else sum(j.FOrgAmount)/sum(i.F_XXQ_AMOUNT) end 完成率,
SUM(case when FExpenseItemID=20138 then j.FOrgAmount else 0 end ) 差旅费实际值,
SUM(case when F_XXQ_BASE=20138 then i.F_XXQ_AMOUNT else 0 end ) 差旅费计划值,
SUM(case when FExpenseItemID=101323 then j.FORGAMOUNT else 0 end ) 招待费实际值,
SUM(case when F_XXQ_BASE=101323 then i.F_XXQ_AMOUNT else 0 end ) 招待费计划值,
SUM(case when FExpenseItemID=101324 then j.FORGAMOUNT else 0 end ) 物耗费实际值,
SUM(case when F_XXQ_BASE=101324 then i.F_XXQ_AMOUNT else 0 end ) 物耗费计划值,
SUM(case when FExpenseItemID=101325 then j.FORGAMOUNT else 0 end ) 标书费实际值,
SUM(case when F_XXQ_BASE=101325 then i.F_XXQ_AMOUNT else 0 end ) 标书费计划值
into #abc
from T_CRM_Opportunity a
left join V_BD_SALESMAN b on a.FBEMPID=b.fid
left join T_BD_STAFF c on b.FSTAFFID=c.FSTAFFID
left join T_HR_EMPINFO d on c.FPERSONID=d.FPERSONID
left join T_HR_EMPINFO_L e on d.FID=e.FID
left join T_BD_DEPARTMENT f on b.FDEPTID=f.FDEPTID
left join T_BD_DEPARTMENT_L g on f.FDEPTID=g.FDEPTID
left join xxq_t_Cust_Entry100007 h on a.FID=h.F_xxq_Integer
left join xxq_t_Cust_Entry100008 i on h.FID=i.FID
left join T_CRM_OppExpense j on a.FID=j.FID
group by YEAR(a.FCREATEDATE),month(a.FCREATEDATE),g.FNAME ,e.FNAME
delete from #abc where not (年份=isnull(@year1,0) and 月份=isnull(@moth1,0))

if isnull(@dep1,'')<>''
begin
delete from #abc where 部门<>isnull(@dep1,'')
end
if isnull(@emp1,'')<>''
begin
delete from #abc where 员工<>isnull(@emp1,'')--nvl
end

select 年份, 月份, 部门, 员工, 实际值, 计划值, 完成率, 差旅费实际值, 差旅费计划值, 招待费实际值, 招待费计划值, 物耗费实际值, 物耗费计划值, 标书费实际值, 标书费计划值
from #abc
union
select 年份, 月份, 部门, '总计',SUM(实际值), SUM(计划值), case when SUM(计划值)<>0 then SUM(实际值)/ SUM(计划值) else 0 end, SUM(差旅费实际值 ), SUM(差旅费计划值 ),SUM( 招待费实际值 ),
SUM( 招待费计划值 ), SUM(物耗费实际值 ), SUM(物耗费计划值 ), SUM(标书费实际值 ), SUM(标书费计划值 )
from #abc
group by 年份, 月份, 部门
union
select 年份, 月份, '总计', '',SUM(实际值), SUM(计划值), case when SUM(计划值)<>0 then SUM(实际值)/ SUM(计划值) else 0 end, SUM(差旅费实际值 ), SUM(差旅费计划值 ),SUM( 招待费实际值 ),
SUM( 招待费计划值 ), SUM(物耗费实际值 ), SUM(物耗费计划值 ), SUM(标书费实际值 ), SUM(标书费计划值 )
from #abc
group by 年份, 月份

order by 1,2,3,4
go

exec proc1 2015,8,'',''

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0