a1,b1,a2,b2,a3,b3,a4,b4,a5,b5
-----------------------------
1,b-1,2,b-2,3,b-3,4,b-4,5,b-5
6,b-6,7,b-7这个结果没看懂....

解决方案 »

  1.   

    是这样吗:
    select number*5+1 a1,'b-'+CAST(number*5+1 as varchar) b1,
           number*5+2 a2,'b-'+CAST(number*5+2 as varchar) b2,
           number*5+3 a3,'b-'+CAST(number*5+3 as varchar) b3,
           number*5+4 a4,'b-'+CAST(number*5+4 as varchar) b4,
           number*5+5 a5,'b-'+CAST(number*5+5 as varchar) b5
           
    from master..spt_values t
    where t.type='P' and number >= 0
          and number <= 10
    /*
    a1 b1 a2 b2 a3 b3 a4 b4 a5 b5
    1 b-1 2 b-2 3 b-3 4 b-4 5 b-5
    6 b-6 7 b-7 8 b-8 9 b-9 10 b-10
    11 b-11 12 b-12 13 b-13 14 b-14 15 b-15
    16 b-16 17 b-17 18 b-18 19 b-19 20 b-20
    21 b-21 22 b-22 23 b-23 24 b-24 25 b-25
    26 b-26 27 b-27 28 b-28 29 b-29 30 b-30
    31 b-31 32 b-32 33 b-33 34 b-34 35 b-35
    36 b-36 37 b-37 38 b-38 39 b-39 40 b-40
    41 b-41 42 b-42 43 b-43 44 b-44 45 b-45
    46 b-46 47 b-47 48 b-48 49 b-49 50 b-50
    51 b-51 52 b-52 53 b-53 54 b-54 55 b-55
    */
      

  2.   

    --如果是行转列,5个一组
    select rn=row_number() over (partition by rw order by a),* into #A from 
    (select rw=(row_number() over (order by a)-1)/5,*  from #TestB) aselect * from #Adeclare @s varchar(max)
    select @s=isnull(@s+',','')+quotename('a'+convert(varchar,rn))+'=max(case when [rn]='+quotename([rn],'''')+'then [a] else null end),'
              +quotename('b'+convert(varchar,rn))+'=max(case when [rn]='+quotename([rn],'''')+'then [b] else null end)' 
    from #A group by rn
    set @s='select'+@s+' from #A group by rw'
    --print @s
    exec(@s)