表如下:学生表
学生编号 学生名
101 张三
102 李四
103 王五
104 甲六
课程表
课程编号 课程名
201 语文
202 数学
203 英语分数表 学生编号 课程编号 分数
102 201 82
102 202 60
102 203 65
101 201 62
101 202 45
101 203 35
103 201 78
103 202 65
103 203 98
根据以上三表合成一个动态的学生成绩表在dbgrid 中显示学生名 课程1 课程2 课程3 课程4
姓名 分数1 分数2 分数3 分数4
学生编号 学生名
101 张三
102 李四
103 王五
104 甲六
课程表
课程编号 课程名
201 语文
202 数学
203 英语分数表 学生编号 课程编号 分数
102 201 82
102 202 60
102 203 65
101 201 62
101 202 45
101 203 35
103 201 78
103 202 65
103 203 98
根据以上三表合成一个动态的学生成绩表在dbgrid 中显示学生名 课程1 课程2 课程3 课程4
姓名 分数1 分数2 分数3 分数4
insert @aa values(101, '张三')
insert @aa values(102,' 李四')
insert @aa values(103, '王五')
insert @aa values(104, '甲六')
declare @bb table (kcid int ,kcname char(8))
insert @bb values(201, '语文')
insert @bb values(202, '数学')
insert @bb values(203, '英语')declare @cc table (xsid int,kcid int,fs int)
insert @cc values(102, 201, 82)
insert @cc values(102, 202, 60)
insert @cc values(102, 203, 65)
insert @cc values(101, 201, 62)
insert @cc values(101, 202, 45)
insert @cc values(101, 203, 35)
insert @cc values(103, 201, 78)
insert @cc values(103, 202, 65)
insert @cc values(103, 203 ,98)if object_id('tempdb..#dd')>0 drop table #dd
select xsname,kcname,fs into #dd from @aa a,@bb b,@cc c where a.xsid=c.xsid and b.kcid=c.kcid
declare @sSql nvarchar(800)
set @sSql='select xsname'
select @sSql=@sSql+',sum(case when kcname='''+kcname+''' then fs else 0 end) as '+kcname
from (select distinct kcname from #dd) AA
set @sSql=@sSql+' from #dd group by xsname'
exec sp_executesql @sSql
insert @aa values(101, '张三')
insert @aa values(102,' 李四')
insert @aa values(103, '王五')
insert @aa values(104, '甲六')
declare @bb table (kcid int ,kcname char(8))
insert @bb values(201, '语文')
insert @bb values(202, '数学')
insert @bb values(203, '英语')declare @cc table (xsid int,kcid int,fs int)
insert @cc values(102, 201, 82)
insert @cc values(102, 202, 60)
insert @cc values(102, 203, 65)
insert @cc values(101, 201, 62)
insert @cc values(101, 202, 45)
insert @cc values(101, 203, 35)
insert @cc values(103, 201, 78)
insert @cc values(103, 202, 65)
insert @cc values(103, 203 ,98)if object_id('tempdb..#dd')>0 drop table #dd
select xsname,kcname,fs into #dd from @aa a,@bb b,@cc c where a.xsid=c.xsid and b.kcid=c.kcid
declare @sSql nvarchar(800)
set @sSql='select xsname'
select @sSql=@sSql+',sum(case when kcname='''+kcname+''' then fs else 0 end) as '+kcname
from (select distinct kcname from #dd) AA
set @sSql=@sSql+' from #dd group by xsname'
exec sp_executesql @sSql