SQL存储过程创建临时表

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER Procedure [dbo].[Mike_1]
as
create table #tmp(
tmCompany varchar(50),
tmCategoryName varchar(50),
tmAmount money,
tmUSDAmount money,
tmPrecent varchar(10),
tmCompanyID int,
tmCategoryID int,
tmTotalCompany money,
tmOrder int
)
--Insert data
insert #tmp(tmCompanyID,tmCategoryID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,tpCategory,sum(tpTotalAmount),sum(tpTotalAmountUSD),1
from Test_PO
group by tpCompany,tpCategory

--Got Company Data

Create table #Sum(
suCompanyID int,
suTotal money
)
insert #Sum(suCompanyID,suTotal)
select tmCompanyID,sum(tmAmount)
from #tmp
group by tmCompanyID
--select * From #Sum

update #tmp set tmTotalCompany=suTotal from #Sum where tmCompanyID=suCompanyID

--Update Precent
update #tmp set tmPrecent=convert(varchar(10),tmAmount/tmTotalCompany*100)+'%'

--Insert Sum Data
insert #tmp(tmCompanyID,tmCategoryName,tmAmount,tmUsdAmount,tmOrder,tmPrecent)
select tmCompanyID,'合计',sum(tmAmount),sum(tmUSDAmount),2,100
from #tmp
group by tmCompanyID

--update Company Name
update #tmp set tmCompany=cpAlterName from Test_Company where cpID=tmCompanyID
--Update Category Name
update #tmp set tmCategoryName=ctName from Test_category where ctID=tmCategoryID
select * from #tmp order by tmCompanyID,tmOrder desc


=======================================================================================


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER Procedure [dbo].[Mike_2]
as
create table #tmp(
tmCompany varchar(50),
tmDepartName varchar(50),
tmAmount money,
tmUSDAmount money,
tmPrecent float,
tmCompanyID int,
tmDepartID int,
tmTotalCompany money,
tmOrder int
)
--Insert data
insert #tmp(tmCompanyID,tmDepartID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,usDepartment,sum(tpTotalAmount),sum(tpTotalAmountUSD),1
from Test_PO,Test_User where tpApplicant=usID
group by tpCompany,usDepartment

--Got Company Data
Create table #Sum(
suCompanyID int,
suTotal money
)
insert #Sum(suCompanyID,suTotal)
select tmCompanyID,sum(tmAmount)
from #tmp
group by tmCompanyID

update #tmp set tmTotalCompany=suTotal from #Sum where tmCompanyID=suCompanyID

--Update Precent
update #tmp set tmPrecent=tmAmount/tmTotalCompany*100

--Insert Sum Data
insert #tmp(tmCompanyID,tmDepartName,tmAmount,tmUsdAmount,tmOrder,tmPrecent)
select tmCompanyID,'合计',sum(tmAmount),sum(tmUSDAmount),2,100
from #tmp
group by tmCompanyID

--update Company Name
update #tmp set tmCompany=cpAlterName from Test_Company where cpID=tmCompanyID
--Update Depart Name
update #tmp set tmDepartName=dpName from Test_Department where dpID=tmDepartID

select * from #tmp order by tmCompanyID,tmOrder



go
exec Mike_2
====================================================================================================
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER Procedure [dbo].[mike_3]
as
create table #tmp(
tmCompany varchar(50),
tmDepartName varchar(100),
tmCostCenterName varchar(100),
tmAmount money,
tmUSDAmount money,
tmCompanyID int,
tmDepartID int,
tmCostCenterID int,
tmOrder int
)
--Insert data
insert #tmp(tmCompanyID,tmDepartID,tmCostCenterID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,usDepartment,tpCostCenterID,sum(tpTotalAmount),sum(tpTotalAmountUSD),1
from Test_PO,Test_User
where tpApplicant=usID and tpCostCenterID<>0
group by tpCompany,usDepartment,tpCostCenterID

insert #tmp(tmCompanyID,tmDepartID,tmCostCenterID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,usDepartment,tpCPAID,sum(tpTotalAmount),sum(tpTotalAmountUSD),1
from Test_PO,Test_User
where tpApplicant=usID and tpCPAID<>0
group by tpCompany,usDepartment,tpCPAID

select * from #tmp
--Insert Department Sum Data
insert #tmp(tmCompanyID,tmDepartID,tmCostCenterName,tmAmount,tmUsdAmount,tmOrder)
select tmCompanyID,tmDepartID,'合计',sum(tmAmount),sum(tmUSDAmount),2
from #tmp
group by tmCompanyID,tmDepartID

--Insert Sum Data
insert #tmp(tmCompanyID,tmDepartID,tmCostCenterName,tmAmount,tmUsdAmount,tmOrder)
select tmCompanyID,sum(tmDepartID),'公司总计',sum(tmAmount),sum(tmUSDAmount),3
from #tmp
group by tmCompanyID

--update Company Name
update #tmp set tmCompany=cpAlterName from Test_Company where cpID=tmCompanyID

--Update Department Name
update #tmp set tmDepartName=dpName from Test_Department where dpID=tmDepartID

--Update CostCenter Name
update #tmp set tmCostCenterName=AccountCodeDesc from Test_AccountCode where ACID=tmCostCenterID

--Insert Total Sum
insert #tmp(tmCompanyID,tmCompany,tmAmount,tmUSDAmount)
select sum(tmCompanyID),'所有总计',sum(tmAmount),sum(tmUSDAmount)
from #tmp
where tmCostCenterName='公司总计'

select * from #tmp order by tmCompanyID,tmDepartID,tmOrder


=================================================================================================
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER Procedure [dbo].[mike_4]
as
create table #tmp(
tmCompany varchar(50),
tmCategoryName varchar(50),
tmItemCode varchar(30),
tmItemName varchar(200),
tmAmount money,
tmUSDAmount money,
tmPrecent float,
tmCompanyID int,
tmCategoryID int,
tmItemID int,
tmTotalCompany money,
tmOrder int
)
--Insert data
insert #tmp(tmCompanyID,tmCategoryID,tmItemID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,tpCategory,rdItem,sum(tpTotalAmount),sum(tpTotalAmount*8),1
from Test_

PO,Test_Detail
where tpCode=rdPR
group by tpCompany,tpCategory,rdItem

--Got Company Data
Create table #Sum(
suCompanyID int,
suTotal money
)
insert #Sum(suCompanyID,suTotal)
select tmCompanyID,sum(tmAmount)
from #tmp
group by tmCompanyID

update #tmp set tmTotalCompany=suTotal from #Sum where tmCompanyID=suCompanyID

--Update Precent
update #tmp set tmPrecent=tmAmount/tmTotalCompany*100

--Insert Category Sum Data
insert #tmp(tmCompanyID,tmCategoryID,tmItemName,tmAmount,tmUsdAmount,tmOrder,tmPrecent)
select tmCompanyID,tmCategoryID,'Category合计',sum(tmAmount),sum(tmUSDAmount),2,100
from #tmp
group by tmCompanyID,tmCategoryID

--Insert Company Sum Data
insert #tmp(tmCompanyID,tmCategoryName,tmAmount,tmUsdAmount,tmOrder,tmPrecent,tmCategoryID)
select tmCompanyID,'合计',sum(tmAmount),sum(tmUSDAmount),3,100,sum(tmCategoryID)
from #tmp
group by tmCompanyID

--update Company Name
update #tmp set tmCompany=cpAlterName from Test_Company where cpID=tmCompanyID
--Update Category Name
update #tmp set tmCategoryName=ctName from Test_category where ctID=tmCategoryID
--Update Item Name
update #tmp set tmitemCode=itName,tmItemName=itDescription from Test_Item where tmItemID=itID

--Insert Total Sum
insert #tmp(tmCompanyID,tmCompany,tmAmount,tmUSDAmount)
select sum(tmCompanyID),'所有总计',sum(tmAmount),sum(tmUSDAmount)
from #tmp
where tmCategoryName='合计'

select * from #tmp order by tmCompanyID,tmCategoryID,tmOrder


==========================================================================================
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER Procedure [dbo].[mike_5]
as
create table #tmp(
tmCompany varchar(50),
tmCategoryName varchar(50),
tmItemCode varchar(30),
tmItemName varchar(200),
tmAmount money,
tmUSDAmount money,
tmPrecent float,
tmCompanyID int,
tmCategoryID int,
tmItemID int,
tmTotalCompany money,
tmOrder int,
tmCount int
)
--Insert data
insert #tmp(tmCompanyID,tmCategoryID,tmItemID,tmAmount,tmUSDAmount,tmOrder)
select tpCompany,tpCategory,rdItem,sum(tpTotalAmount),sum(tpTotalAmount*8),2
from Test_PO,Test_Detail
where tpCode=rdPR
group by tpCompany,tpCategory,rdItem

--Got Company Data
Create table #Sum(
suCompanyID int,
suTotal money,
suCOunt int
)
insert #Sum(suCompanyID,suTotal,suCount)
select tmCompanyID,sum(tmAmount),count(*)
from #tmp
group by tmCompanyID

update #tmp set tmTotalCompany=suTotal,tmCOunt=suCount from #Sum where tmCompanyID=suCompanyID

--Update Precent
update #tmp set tmPrecent=tmAmount/tmTotalCompany*100

--Insert Category Sum Data
insert #tmp(tmCompanyID,tmCategoryID,tmItemName,tmAmount,tmUsdAmount,tmOrder,tmPrecent)
select tmCompanyID,tmCategoryID,'Category合计',

sum(tmAmount),sum(tmUSDAmount),0,100
from #tmp
group by tmCompanyID,tmCategoryID

--Insert Company Sum Data
insert #tmp(tmCompanyID,tmCategoryName,tmAmount,tmUsdAmount,tmOrder,tmPrecent,tmCategoryID)
select tmCompanyID,'合计',sum(tmAmount),sum(tmUSDAmount),1,100,sum(tmCategoryID)
from #tmp
group by tmCompanyID

--update Company Name
update #tmp set tmCompany=cpAlterName from Test_Company where cpID=tmCompanyID
--Update Category Name
update #tmp set tmCategoryName=ctName from Test_category where ctID=tmCategoryID
--Update Item Name
update #tmp set tmitemCode=itName,tmItemName=itDescription from Test_Item where tmItemID=itID
select * from #tmp order by tmCompanyID,tmCategoryID,tmOrder



相关文档
最新文档