首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

100条数据,怎么分每成20行*N列显示出来

2013-08-01 
100条数据,如何分每成20行*N列显示出来有一个表有两个字段。numbername1001jack............1021teddy.....

100条数据,如何分每成20行*N列显示出来
有一个表有两个字段。
number  name
1001    jack
............
1021    teddy
.............
1041    mary
.............
1061     jacky
.............
1081     james

查询出来结果
number name number name  number name ......
1001   jack 1021  teddy  1041   mary

这里是假如有100条数据,以后会增加的,就是每20行换一次,如此类推,不用管排序



[解决办法]
declare @s varchar(8000) 
set @s=''
select @s=@s+name+CHAR(9)+case when rn%20=0 then CHAR(13) else CHAR(9) end
from (select *,ROW_NUMBER() over(order by number) as rn from tb)t
print left(@s,len(@s)-1)
[解决办法]
这是100条分折十行的结果,自己参考着写就可以了


if OBJECT_ID('tb')>0 drop table tb 
go
create table tb(number int,name varchar(20))
insert tb 
select top 100 rn1=ROW_NUMBER()over(order by getdate()),ROW_NUMBER()over(order by getdate())
from master..spt_values

;with t as
(
select rn1=(ROW_NUMBER()over(order by getdate())-1)%10+1,
   rn2=(ROW_NUMBER()over(order by getdate())-1)/10+1,
   *
from tb
)
select max(case when rn1=1 then number else '' end) number, 
max(case when rn1=1 then name else '' end) name, 
max(case when rn1=2 then number else '' end) number, 
max(case when rn1=2 then name else '' end) name, 
max(case when rn1=3 then number else '' end) number,
max(case when rn1=3 then name else '' end) name,  
max(case when rn1=4 then number else '' end) number,
max(case when rn1=4 then name else '' end) name, 


max(case when rn1=5 then number else '' end) number,
max(case when rn1=5 then name else '' end) name, 
max(case when rn1=6 then number else '' end) number,
max(case when rn1=6 then name else '' end) name, 
max(case when rn1=7 then number else '' end) number,
max(case when rn1=7 then name else '' end) name, 
max(case when rn1=8 then number else '' end) number,
max(case when rn1=8 then name else '' end) name, 
max(case when rn1=9 then number else '' end) number,
max(case when rn1=9 then name else '' end) name, 
max(case when rn1=10 then number else '' end) number,
max(case when rn1=10 then name else '' end) name
from t
group by rn2
/*

number      name                 number      name                 number      name                 number      name                 number      name                 number      name                 number      name                 number      name                 number      name                 number      name
----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- -------------------- ----------- --------------------


1           1                    2           2                    3           3                    4           4                    5           5                    6           6                    7           7                    8           8                    9           9                    10          10
11          11                   12          12                   13          13                   14          14                   15          15                   16          16                   17          17                   18          18                   19          19                   20          20


21          21                   22          22                   23          23                   24          24                   25          25                   26          26                   27          27                   28          28                   29          29                   30          30
31          31                   32          32                   33          33                   34          34                   35          35                   36          36                   37          37                   38          38                   39          39                   40          40


41          41                   42          42                   43          43                   44          44                   45          45                   46          46                   47          47                   48          48                   49          49                   50          50
51          51                   52          52                   53          53                   54          54                   55          55                   56          56                   57          57                   58          58                   59          59                   60          60


61          61                   62          62                   63          63                   64          64                   65          65                   66          66                   67          67                   68          68                   69          69                   70          70
71          71                   72          72                   73          73                   74          74                   75          75                   76          76                   77          77                   78          78                   79          79                   80          80


81          81                   82          82                   83          83                   84          84                   85          85                   86          86                   87          87                   88          88                   89          89                   90          90
91          91                   92          92                   93          93                   94          94                   95          95                   96          96                   97          97                   98          98                   99          99                   100         100



(10 行受影响)
*/

热点排行