数据库里的数据是这样的,字段1 字段2   字段3
2号     1     A   ...(省略号代表后面的字段先不写了)
1号     2     v   ...
3号     3     d   ...
1号     1     d   ...
2号     2     d   ...
4号     2     d   ...
3号     1     d   ...
5号     4     e   ...
3号     2     e   ...
4号     1     4   ...
4号     3     d   ...
5号     2     5   ...
5号     1     2   ...
5号     3     5   ...
6号     3     7   ...
6号     1     d   ...
我要的效果是这样的
1号  2号  3号  第一页
1    1    1
d    A    d
.    .    .
1号  2号  3号  第二页
2    2    2
v    d    3
.    .    . ......省略一下当我把1号  2号  3号排完了之后,开始排 4号  5号 6号4号  5号 6号  第一页
1    1    1
4    2    d
.    .    .
4号  5号 6号   第二页
2    2   2
d    5   
.    .   .
......省略一下

解决方案 »

  1.   

    只以程序思想决定的功能,就在程序实现吧,sql就算能实现,也是浪费宝贵的服务器资源。
      

  2.   

    给你个行转列例子,在查询分析器运行看看--if not object_id('Class') is null
    --    drop table Class
    --Go
    --Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int)
    --Insert Class
    --select N'张三',N'语文',78 union all
    --select N'张三',N'数学',87 union all
    --select N'张三',N'英语',82 union all
    --select N'张三',N'物理',90 union all
    --select N'李四',N'语文',65 union all
    --select N'李四',N'数学',77 union all
    --select N'李四',N'英语',65 union all
    --select N'李四',N'物理',85 
    --Go--2005方法
    declare @s nvarchar(4000)
    Select     @s=isnull(@s+',','')+quotename([Course]) from Class group by[Course] --isnull(@s+',','') 去掉字符串@s中第一个逗号
    exec('select [Student],'+@s+',[总成绩] from (select *,[总成绩]=sum([Score])over(partition by [Student]) from Class) a 
    pivot (max([Score]) for [Course] in('+@s+'))b ')
    --2005方法