A欄  B欄 C欄
test 002 010
如何使報表顯示成
test 002
test 003
test 004
...
test 010 
如何用一句实现

解决方案 »

  1.   

    一句--准备环境
    declare @t table (
    A欄  varchar(10),
    B欄 varchar(10),
    C欄 varchar(10)
    )
    insert @t select
    'test','002','010'--查询
    select A欄,
       right('000'+cast(x.num as varchar(4)),3)
    from @t t left join (
    select a.a+10*b.b+100*c.c as num 
    from (
    select 0 as a union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as a,(
    select 0 as b union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as b,(
    select 0 as c union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as c
    ) as x
    on x.num between cast(B欄 as int) and cast(C欄 as int)
      

  2.   

    --结果
    A欄                
    ---------- ------ 
    test       010
    test       002
    test       003
    test       004
    test       005
    test       006
    test       007
    test       008
    test       009(所影响的行数为 9 行)
      

  3.   

    --准备环境
    declare @t table (
    A欄  varchar(10),
    B欄 varchar(10),
    C欄 varchar(10)
    )
    insert @t select
    'test','002','010'--查询
    select A欄,
       right('000'+cast(x.num as varchar(4)),3) as B欄
    from @t t left join (
    select a.a+10*b.b+100*c.c as num 
    from (
    select 0 as a union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as a,(
    select 0 as b union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as b,(
    select 0 as c union all
    select 1 union all
    select 2 union all
    select 3 union all
    select 4 union all
    select 5 union all
    select 6 union all
    select 7 union all
    select 8 union all
    select 9 
    ) as c
    ) as x
    on x.num between cast(B欄 as int) and cast(C欄 as int)
    order by x.num
    --结果A欄         B欄     
    ---------- ------ 
    test       002
    test       003
    test       004
    test       005
    test       006
    test       007
    test       008
    test       009
    test       010(所影响的行数为 9 行)