大概内容如下:
先select id ,name,age from student
然后通过 id从另一个表里带出科目和成绩出来
select subject,score from grade INNER JOIN student ON grade.id = student.id
但是带出来的subject 是动态的 比如 id=1的话 可能带出来的就语文
id=2的话就带出来 语文,数学了
如果就id=1要显示的是
id name age 语文
1 A 18 60
如果id=2的也存在的话
id name age 语文 数学
1 A 18 60
2 B 17 40 80
就相当于那grade里查询出来的subject的值 作为字段来显示
最后要放进 DATEGRID里面的 要怎么做哈 请高手帮帮忙哈
先select id ,name,age from student
然后通过 id从另一个表里带出科目和成绩出来
select subject,score from grade INNER JOIN student ON grade.id = student.id
但是带出来的subject 是动态的 比如 id=1的话 可能带出来的就语文
id=2的话就带出来 语文,数学了
如果就id=1要显示的是
id name age 语文
1 A 18 60
如果id=2的也存在的话
id name age 语文 数学
1 A 18 60
2 B 17 40 80
就相当于那grade里查询出来的subject的值 作为字段来显示
最后要放进 DATEGRID里面的 要怎么做哈 请高手帮帮忙哈
解决方案 »
- asp.net入门最简单的问题,解决送100分,在线等,谢谢
- jquery代码哪里错了
- CalendarExtender控件样式问题
- 验证码控件问题
- SQL存储过程问题!请高手帮忙!大伙来看看!顶着有分不够+分!
- 把数据从页面导出到EXCEL时发现数据格式不对
- 如何使config.web中的设置对当前asp.net网页生效?
- VB 与ASP.NET 的问题(分可以再加)
- 求救!!!大侠,拔刀相助啊!
- 急急,简单问题,在DataGrid中加入TextBox模板,当TextBox内容更改时有相应的事件,但不能获取DataGird数据行,有简单过程;在线等!!!
- 问一下这代码中间部份是什么意思
- 请教模拟post提交(asp.net)
(
id int,
name nvarchar(50),
age int,
)
insert into student values(1,'A',18)
insert into student values(2,'B',18)
insert into student values(3,'C',18)
insert into student values(4,'D',18)
insert into student values(5,'E',18)
create table grade
(
id int,
subject nvarchar(50),
score int,
)
insert into grade values(1,'语文',80)
insert into grade values(2,'语文',80)
insert into grade values(2,'数学',80)
insert into grade values(3,'语文',80)
insert into grade values(3,'物理',80)
insert into grade values(3,'化学',80)
大致的关系是这样的 下面改怎么办,谢谢帮忙哈
set @sql = 'select a.id,name,age'
select @sql = @sql + ',case b.subject when ''' + subject + ''' then score else null end as [' + subject + ']' from grade group by subject
exec (@sql + ' from student a left join grade b on a.id=b.id')
student中id在表grade中不存在的记录则把 left join 改为inner join
好象还有点小问题 如果 id = 1的时候 其实只有语文成绩 其他成绩的字段不需要带出来的 也带出来了
1 A 18 NULL NULL NULL 80
成这样了 可以不带出来么 要是就id=1的话
-----------------declare @sql varchar(8000)
set @sql = 'select a.id,name,age'
select @sql = @sql + ',case b.subject when ''' + subject + ''' then score else null end as [' + subject + ']' from grade where id=1 group by subject
exec (@sql + ' from student a inner join grade b on a.id=b.id')
就是2 3的其他成绩不出来了 就出来语文成绩了的
@id int
as
declare @sql varchar(8000)
set @sql = 'select a.id,name,age'
select @sql = @sql + ',case b.subject when ''' + subject + ''' then score else null end as [' + subject + ']' from grade where id=@id group by subject
set @sql = @sql + ' from student a inner join grade b on a.id=b.id where a.id=' + convert(varchar,@id)
exec (@sql)--调用的时候
exec spGetData 1