在线等:数据库列动态显示

andy130682 2007-01-08 10:34:36
我有一个成绩表:
学号 年级 班级 语文 数学 英语 物理 化学 生物 历史 地理 政治
10101 1 1 80 80 81 80 80 80 80 80
10102 2 1 80 80 80 80 80 80 80

年级不一样,课程也不一样,如一年级没化学,当年级=1时,化学列为空,怎么让他动态显示啊,年级=2时,物理化学列为空
...全文
209 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
if object_id('testdb') is not null drop table testdb
go
--创建测试数据
create table testdb(ID int,name varchar(10),num int,test1 varchar(10),test2 varchar(10))
insert testdb
select 1, 1, 22, null, null union all
select 2, 2, null, null, null

create table #(result varchar(20))

--执行查询
declare @str varchar(8000)
set @str = ''
select @str = @str + 'if not exists(select * from testdb where ' + name + ' is null) insert # values( ''' + name + ''')'+char(10)
from syscolumns where id = object_id('testdb')
exec(@str)

declare @str2 varchar(8000)
set @str2 = ''
select @str2=@str2 + result +',' from #
set @str2=Left(@str2,Len(@str2)-1)
set @str2='select '+@str2+' from testdb'
exec(@str2)

--删除测试环境
drop table testdb,#

--查看结果
/*
ID name
-------------
1 1
2 2
*/
andy130682 2007-01-08
  • 打赏
  • 举报
回复
就是楼上这样的,当查询的时候是按年级查询的,每个年级课程不一样,所以1年级物理列全为空,让他动态不显示
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
是要这样显示么?
学号 年级 班级 语文 数学 英语 生物 历史 地理 政治
10101 1 1 80 80 81 80 80 80 80
10102 2 1 80 80 80 80 80 80 80
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
楼主能用一句话表达出你这样做的目的是什么?
mengmou 2007-01-08
  • 打赏
  • 举报
回复
查询的时候不要select这一列就是了。
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
把空的列不显示出来?
有一项为空的列全部不显示出来?还是所有为空的列才不显示出来?
andy130682 2007-01-08
  • 打赏
  • 举报
回复
我说的是把空的列不显示出来,是动态的
mengmou 2007-01-08
  • 打赏
  • 举报
回复
你给的结果不就是空的吗?
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
case 化学 when 年级=1 or 年级=2 then ''
case 物理 when 年级=2 then ''
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
case 化学 when 年级=1 or 年级=2 then NULL
case 物理 when 年级=2 then NULL
caixia615 2007-01-08
  • 打赏
  • 举报
回复
有点迷糊,加个ISNULL(字段名,'')判断
gc_ding 2007-01-08
  • 打赏
  • 举报
回复
另:建议楼主把“语文 数学 英语 物理 化学 生物 历史 地理 政治”这些字段设计为
合并成一个字段会比较好

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧