编程论坛's Archiver

roy78 发表于 2008-3-8 09:29

刚学游标,请教导一下,在线等!

declare @xx nvarchar(15),@yy nvarchar(15)
declare zz cursor for
select 物品名称,出口规格 from 班报表2 where 出口重量>'10' and 出口规格='0.3*1003*C'
print '出口重量大于10吨的有'
open zz
fetch next from zz into @xx,@yy
while @@fetch_status = 0
begin
     fetch next from zz into @xx,@yy
print '物品名称'++'   '+'出口规格'
    print @xx+@yy
    end
close zz
deallocate zz



我希望得到的结果是,当我的出口重量 <=100  或 在100到120之间,就不再取下一条记录。在线急等回复,谢谢了。
另:为什么我显示的两个字段结果这什么贴着这么近啊?[attach]32817[/attach]我希望是像右边那样子的。谢了。

purana 发表于 2008-3-8 10:13


declare zz cursor for
select 物品名称,出口规格 from 班报表2 where 出口重量>'10' and 出口规格='0.3*1003*C'
加上在100和120之间就可以

roy78 发表于 2008-3-8 10:26

不好意思,应该是当出口重量的合SUM(出口重量)<=100 or 在100与120之间

purana 发表于 2008-3-8 10:40

要么写select写sum(出口重量)

要么你
select 物品名称,出口规格,出口重量 from 班报表2 where 出口重量>'10' and 出口规格='0.3*1003*C'
在这把出口重量也输出
fetch next from zz into @xx,@yy,@出口重量变量
set @总重量=@总重量+@出口重量变量
if @总重量 ...条件.
   break  --退出循环.


...
...
--关闭游标.

roy78 发表于 2008-3-8 10:55

declare @xx nvarchar(15),@yy nvarchar(15)
declare @zz float,@aa float
declare zz cursor for
select 物品名称,出口规格,出口重量 from 轧机班报表2 where 出口重量>'15' and 出口规格='0.3*1003*C'
group by 物品名称,出口规格,出口重量
print '出口重量大于10吨的有'
open zz
fetch next from zz into @xx,@yy,@zz
set @aa=@aa+@zz
if @aa>=100
begin
while @@fetch_status = 0
begin
     fetch next from zz into @xx,@yy,@zz

    print @xx+@yy+@zz
    end
close zz
deallocate zz


斑猪!请指导一下好吗?搞了半天搞不出来。

purana 发表于 2008-3-8 11:03

晕死..

roy78 发表于 2008-3-8 11:05

[bc07] 帮帮吧,哭死

declare @xx nvarchar(15),@yy nvarchar(15)
declare @zz float,@aa float
set @aa=@aa+@zz
declare zz cursor for
select 物品名称,出口规格,出口重量 from 轧机班报表2 where 出口重量>'15' and 出口规格='0.3*1003*C'
group by 物品名称,出口规格,出口重量
print '出口重量大于10吨的有'
open zz
fetch next from zz into @xx,@yy,@zz
while @@fetch_status = 0
begin
if @aa>=100
begin
     fetch next from zz into @xx,@yy,@zz
END

    print @xx+@yy+@zz
    end
close zz
deallocate zz

[bo][font=黑体][color=Red]将数据类型 nvarchar 转换为 float 时出错。[/color][/font][/bo]

[[it] 本帖最后由 roy78 于 2008-3-8 11:06 编辑 [/it]]

roy78 发表于 2008-3-8 12:21

declare @xx nvarchar(15),@yy nvarchar(15),@zz nvarchar(8)
declare @aa float
declare zz cursor for
select 物品名称,出口规格,出口重量 from 班报表2 where 出口重量>'15' and 出口规格='0.3*1003*C'
group by 物品名称,出口规格,出口重量
print '出口重量大于10吨的有'
open zz
fetch next from zz into @xx,@yy,@zz
while @@fetch_status = 0
begin
set @aa=@aa+@zz
if @aa>=100
begin
     fetch next from zz into @xx,@yy,@zz

END

    print @xx+@yy+@zz
    end
close zz
deallocate zz

还是不对呀,高手指点一下吧。当合计值 >=100  或者 在100—120之间时,停止取下条记录

roy78 发表于 2008-3-8 16:55

高手们帮帮忙吧。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.