create table test(a int,b float)--创建表
insert into test values(1,10.0)--插入表
insert into test values(2,11.2)--插入表
insert into test values(3,18.4)--插入表
insert into test values(4,47.4)--插入表
insert into test values(5,50.9)--插入表
insert into test values(6,85.7)--插入表
go--结束第一个批处理
declare @n int--控制循环
set @n=1--初始条件
while(@n in(select a from test))--控制循环、循环条件
begin--循环体开始
select
begin--select
while(b<100)
begin--begin while
if(b<60)set b=b+4
else if(b<70)set b=b+3
else if(b<80)set b=b+2
else if(b<90)set b=b+1
else break
select b
from test
where a=@n
Quote:

--这个从表里输出某一项有没有别的语句
--能不能短一点啊,总是好几行
    end--end while
select b
    from test
where a=@n
    end--end select
from test
where a=@n
set @n=@n+1--控制条件
end--循环体结束
go

解决方案 »

  1.   

    create table test(a int,b float)--创建表
    insert into test values(1,10.0)--插入表
    insert into test values(2,11.2)--插入表
    insert into test values(3,18.4)--插入表
    insert into test values(4,47.4)--插入表
    insert into test values(5,50.9)--插入表
    insert into test values(6,85.7)--插入表
    go--结束第一个批处理
    declare @n int--控制循环
    set @n=1--初始条件
    while(@n in(select a from test))--控制循环、循环条件
    begin--循环体开始
    --SELECT 
    --begin--select
    --while(b<100)
    --begin--begin while
    -- if(b<60)set b=b+4
    -- else if(b<70)set b=b+3
    -- else if(b<80)set b=b+2
    -- else if(b<90)set b=b+1
    -- else break
    -- select b
    -- from test
    -- where a=@n
    ----这个从表里输出某一项有没有别的语句
    ----能不能短一点啊,总是好几行
    --     end--end while
    select CASE 
    WHEN b<60 THEN b+4 
    WHEN (b<70 AND b>=60) THEN b+3
        WHEN b<80 AND b>=70 THEN b+2
        WHEN b<90 AND b>=80 THEN b+1
    ELSE b 
       END
        from test
    where a=@n AND b<100
        --end--end select
    --from test
    --where a=@n
    set @n=@n+1--控制条件
    end--循环体结束
    GO
      

  2.   

    我把select case改为select b=case
    在set @n=@n+1前加一个
    if((select b from test where a=@n)>=100)
    怎么他就无限输出14,而不是累加呢,
    select b=case不是可以赋值的吗?