数据库里的数据是这样的,字段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
. . .
......省略一下
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
. . .
......省略一下
-- 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方法