问题如下:
如何将@sign从@row+1行开始取的数据 ,而不是第row行 谢谢!
代码如下:
declare tmp cursor for
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00), sign
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin
...........
............
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign end
close tmp
deallocate tmp
如何将@sign从@row+1行开始取的数据 ,而不是第row行 谢谢!
代码如下:
declare tmp cursor for
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00), sign
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin
...........
............
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign end
close tmp
deallocate tmp
解决方案 »
- 比大小
- 求一SQL语句
- 紧急求助!!SQL的UPDATE语句问题
- 如何快速提取表中不同日期变化的数据
- 高手请进,两个数据库服务器如何保持数据同步,不用触发器可不可以实现!
- sql中如何知道一个表中的int型的设为主键字段即将插入的一条的数值?
- sqlserver企业版安装
- 请教各位高手:控制面板里的 ODBC 是否装好windows就可用?
- 求1不复杂的sql
- 求日立显示器件(苏州)有限公司软件工程师(数据库编程)笔试题目!分数全部奉送!
- 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写?
- SQL怎么写:主键表中的全部记录,以及主键表每一条记录在外键表中的条数统计值(count)
from ht_tmp_no_h where row=@row
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),i
snull(y_rea,0.00),isnull(ly_rea,0.00), sign
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin --交换上来即可
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
...........
............ end
close tmp
deallocate tmp
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00), sign
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign --先推进游标然后再做处理就可以了 ...........
............
end
close tmp
deallocate tmp
@d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea这些变量从第@row行开始取数据
@sign则从第@row+1行开始取数据
declare tmp cursor for
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00)
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin declare tmp_sign cursor for
select sign
from ht_tmp_no_h where row=@row+1
open tmp_sign
fetch next from tmp_sign into @sign
while @@fetch_status=0
begin ...........
............
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign end
close tmp_sign
deallocate tmp_sign ...........
............
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign end
close tmp
deallocate tmp
看看行不?
declare @d_rea_1 nvarchar(50)
declare @m_rea_1 nvarchar(50)
declare @lm_rea_1 nvarchar(50)
declare @y_rea_1 nvarchar(50)
declare @ly_rea_1 nvarchar(50)
declare @sign_1 nvarchar(50)
declare tmp cursor for
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00), sign
from ht_tmp_no_h where row=@row
open tmp
--@sign_1 占位
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign_1
while @@fetch_status=0
begin
--把sign 付给@sign,其他字段没有
fetch next from tmp into @d_rea_1,@m_rea_1,@lm_rea_1,@y_rea_1,@ly_rea_1,@sign
--下面是你的处理操作
...........
............ end
close tmp
deallocate tmp
这样行不行
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00)
from ht_tmp_no_h
where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea
while @@fetch_status=0
begin declare tmp1 cursor for
select [sign]
from ht_tmp_no_h
where d_rea=@d_rea and m_rea=@m_rea and lm_rea=@lm_rea and y_rea=@y_rea and ly_rea=@ly_rea open tmp1
fetch next from tmp1 into @sign
while @@fetch_status=0
begin ...........
............
fetch next from tmp1 into @sign end
close tmp1
deallocate tmp1 ...........
............
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea end
close tmp
deallocate tmp
谢谢各位 不过还是答不到要求,我的意思是:
@d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea这些变量从第@row行开始取数据
@sign则从第@row+1行开始取数据
------------------------------------------------------------------------
那到最後一條紀錄怎麼办?@sign就沒有值了
declare tmp cursor for
select isnull(d_rea,0.00),isnull(m_rea,0.00),isnull(lm_rea,0.00),isnull(y_rea,0.00),isnull(ly_rea,0.00),sign
from ht_tmp_no_h where row=@row
open tmp
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign
while @@fetch_status=0
begin
select @d_rea_sum =
(CASE
WHEN @sign='+' THEN @d_rea_sum +@d_rea
WHEN @sign='-' THEN @d_rea_sum-@d_rea
WHEN @sign='*' THEN @d_rea_sum*@d_rea
WHEN @sign='/' THEN @d_rea_sum/@d_rea
END)
.........
if @ly_rea_sum>0
set @r_rea= @y_rea_sum/@ly_rea_sum -1 else
set @r_rea=0.00
fetch next from tmp into @d_rea,@m_rea,@lm_rea,@y_rea,@ly_rea,@sign end
close tmp
deallocate tmp
--------将第@row行数据插入到ht_check_report_all_test表中
print @d_rea_sum
update ht_check_report_all_test
set d_rea=@d_rea_sum,m_rea=@m_rea_sum,lm_rea=@lm_rea_sum,y_rea=@y_rea_sum,ly_rea=@ly_rea_sum,r_rea=@r_rea
from ht_check_report_all_test
where sign =@row
fetch next from cur_tmp into @row
endclose cur_tmp
deallocate cur_tmp
--select row,dbo.f1(1) from ht_tmp_no_h where row=@row
GO
zp_cool() 写的SQL应该可以,可能是因为变量所以会出错,看这样行不行?select isnull(ht_tmp_no_h.d_rea,0.00),isnull(ht_tmp_no_h.m_rea,0.00),isnull(ht_tmp_no_h.lm_rea,0.00),isnull(ht_tmp_no_h.y_rea,0.00),isnull(ht_tmp_no_h.ly_rea,0.00), httmp.sign as sign
from ht_tmp_no_h inner join ht_tmp_no_h httmp on ht_tmp_no_h.row+1=httmp.row where ht_tmp_no_h.row=@row
http://community.csdn.net/Expert/topic/5476/5476783.xml?temp=.4725