CREATE PROCEDURE [Meter_XiaoQu]
@XiaoQuName nvarchar(100),
@dateend datetime,
@page int,
@pagecount int
AS
set nocount on
--select cast(@XiaoQuName as nvarchar)
--declare @XiaoQuName nvarchar(100)
--set @XiaoQuName='110宿舍'
select id,入网时间 into #XinXi from XhuJu_user_XinXi where 用户分类 = '小区宽带' and 单位名称 = @XiaoQuName
declare @datebegin datetime--,@dateend datetime
select @datebegin=min(入网时间) from #XinXi
--set @dateend=getdate()
declare @rc int
set @rc=datediff(month,@datebegin,@dateend)+1
set rowcount @rc
select sn=identity(int,0,1) into #t from syscolumns
set rowcount 0
select year=year(dateadd(month,sn,@datebegin)),month=month(dateadd(month,sn,@datebegin))
into #t1 from #t
select * into #XinXi_user from #XinXi,#t1
select XinXi_id,Y_id=year(日期),M_id=month(日期),金额 into #ChuZhang from XhuJu_user_ChuZhang a left join XhuJu_user_XinXi b on a.XinXi_id = b.id where b.单位名称 = @XiaoQuName
select XinXi_id,Y_id,M_id,金额=sum(金额) into #ChuZhang_user from #ChuZhang group by XinXi_id,Y_id,M_id order by XinXi_id
select XinXi_id,Y_id=year(日期),M_id=month(日期),金额 into #RuZhang from XhuJu_user_RuZhang a left join XhuJu_user_XinXi b on a.XinXi_id = b.id where b.单位名称 = @XiaoQuName
select XinXi_id,Y_id,M_id,金额=sum(金额) into #RuZhang_user from #RuZhang group by XinXi_id,Y_id,M_id order by XinXi_id
select XinXi_id,Y_id=year(日期),M_id=month(日期),金额 into #JianMian from XhuJu_user_JianMian a left join XhuJu_user_XinXi b on a.XinXi_id = b.id where b.单位名称 = @XiaoQuName
select XinXi_id,Y_id,M_id,金额=sum(金额) into #JianMian_user from #JianMian group by XinXi_id,Y_id,M_id order by XinXi_id
select a.id,a.year,a.month,出帐=isnull(b.金额,0) into #XinXi_1 from #XinXi_user a left join #ChuZhang_user b on (a.id = b.XinXi_id and a.year = b.Y_id and a.month = b.M_id)
select a.id,a.year,a.month,a.出帐,入帐=isnull(b.金额,0) into #XinXi_2 from #XinXi_1 a left join #RuZhang_user b on (a.id = b.XinXi_id and a.year = b.Y_id and a.month = b.M_id)
select a.id,a.year,a.month,a.出帐,a.入帐,减免=isnull(b.金额,0) into #XinXi_3 from #XinXi_2 a left join #JianMian_user b on (a.id = b.XinXi_id and a.year = b.Y_id and a.month = b.M_id)
declare @s2 varchar(8000)
select @s2=''
select @s2=@s2+',['+cast(year as varchar)+'_'+cast(month as varchar)+']=max(case when year='+cast(year as varchar)+' and month='+cast(month as varchar)+' then cast(出帐 as varchar)+'',''+cast(入帐 as varchar)+'',''+cast(减免 as varchar) else '''' end)' from #XinXi_3 group by year,month
--select b.联系人,b.入网时间,b.联系电话,b.联系手机,a.* from (select id'+@s2+' into #Mqflf from #XinXi_3 group by id) a left join XhuJu_user_XinXi b on a.id = b.id
declare @pageC as int
set @pageC=@pagecount*@page
exec('select id'+@s2+' into ##t0 from #XinXi_3 group by id')
exec('select b.联系人,b.入网时间,b.联系电话,b.联系手机,a.* from (select top '+@pagecount+' * from ##t0 where id not in(select top '+@pageC+' id from ##t0 order by id) order by id) a left join XhuJu_user_XinXi b on a.id = b.id')
不知道楼主要达到个什么目的,其它建立一个过渡表,之后再删除也一样
如:
CREATE PROCEDURE [Meter_XiaoQu] as
create table #t....
exec('insert into #t select * from table')
select * from #t
go