聚合函数,存储过程,该怎么处理
聚合函数,存储过程
declare @CD_id varchar(20),@City_id varchar(10),@CurrDevo float,@CurrInve float ,@date datetime
declare @N int
set @N=0
set @date=getdate()
declare cur cursor for
select CD_id,City_id,CurrDevo,CurrInve from CityDevo
open cur
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
while @@fetch_status=0
begin
/*select @CD_id,@City_id,@CurrDevo,@CurrInve*/
declare cur1 cursor for
select sum(CurrInve) as suminve from CityDevo where City_id=@City_id
open cur1
fetch next from cur1 into @CurrInve
while @@fetch_status=0
begin
***************
fetch next from cur1 into @CurrInve
end
close cur1
deallocate cur1
print @CurrInve
set @N=@N+1
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
end
close cur
deallocate cur
GO
如何把sum(CurrInve)输入出来?[b][/b][color=#FF0000][/color]
------解决方案--------------------
“select sum(CurrInve) as suminve from CityDevo where City_id=@City_id ”
--------------------
不知道你这里是贴出一部分代码还是仅是某一部分代码
看了下你的代码,你是求各类City_id的CurrInve累加之和吧?
如果用2层游标那么复杂呢?直接一句语句就可以处理了啊
“如何把sum(CurrInve)输入出来?”
-------------------------------
你这里面是显示一个结果集的意思吧?(有点看不明白你的意图)
如果是这样,那在不改动你上面程序的情况下
建立一个临时表变量处理即可:
declare @CD_id varchar(20),@City_id varchar(10),@CurrDevo float,@CurrInve float ,@date datetime
declare @N int
declare @tb table(city_id varchar(10),total_CurrDevo float)
set @N=0
set @date=getdate()
declare cur cursor for
select CD_id,City_id,CurrDevo,CurrInve from CityDevo
open cur
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
while @@fetch_status=0
begin
/*select @CD_id,@City_id,@CurrDevo,@CurrInve*/
declare cur1 cursor for
select sum(CurrInve) as suminve from CityDevo where City_id=@City_id
open cur1
fetch next from cur1 into @CurrInve
while @@fetch_status=0
begin
***************
insert into @tb values(@City_id,@CurrInve )
fetch next from cur1 into @CurrInve
end
close cur1
deallocate cur1
print @CurrInve
set @N=@N+1
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
end
close cur
deallocate cur
select * from @tb
GO
declare @CD_id varchar(20),@City_id varchar(10),@CurrDevo float,@CurrInve float ,@date datetime
declare @N int
set @N=0
set @date=getdate()
declare cur cursor for
select CD_id,City_id,CurrDevo,CurrInve from CityDevo
open cur
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
while @@fetch_status=0
begin
/*select @CD_id,@City_id,@CurrDevo,@CurrInve*/
declare cur1 cursor for
select sum(CurrInve) as suminve from CityDevo where City_id=@City_id
open cur1
fetch next from cur1 into @CurrInve
while @@fetch_status=0
begin
***************
fetch next from cur1 into @CurrInve
end
close cur1
deallocate cur1
print @CurrInve
set @N=@N+1
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
end
close cur
deallocate cur
GO
如何把sum(CurrInve)输入出来?[b][/b][color=#FF0000][/color]
------解决方案--------------------
“select sum(CurrInve) as suminve from CityDevo where City_id=@City_id ”
--------------------
不知道你这里是贴出一部分代码还是仅是某一部分代码
看了下你的代码,你是求各类City_id的CurrInve累加之和吧?
如果用2层游标那么复杂呢?直接一句语句就可以处理了啊
“如何把sum(CurrInve)输入出来?”
-------------------------------
你这里面是显示一个结果集的意思吧?(有点看不明白你的意图)
如果是这样,那在不改动你上面程序的情况下
建立一个临时表变量处理即可:
declare @CD_id varchar(20),@City_id varchar(10),@CurrDevo float,@CurrInve float ,@date datetime
declare @N int
declare @tb table(city_id varchar(10),total_CurrDevo float)
set @N=0
set @date=getdate()
declare cur cursor for
select CD_id,City_id,CurrDevo,CurrInve from CityDevo
open cur
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
while @@fetch_status=0
begin
/*select @CD_id,@City_id,@CurrDevo,@CurrInve*/
declare cur1 cursor for
select sum(CurrInve) as suminve from CityDevo where City_id=@City_id
open cur1
fetch next from cur1 into @CurrInve
while @@fetch_status=0
begin
***************
insert into @tb values(@City_id,@CurrInve )
fetch next from cur1 into @CurrInve
end
close cur1
deallocate cur1
print @CurrInve
set @N=@N+1
fetch next from cur into @CD_id,@City_id,@CurrDevo,@CurrInve
end
close cur
deallocate cur
select * from @tb
GO