紧急求救!动态建立表的项目!

bbshero 2003-08-24 07:58:09
单位接了个一个药品研究所的项目,他们要为全国的各个厂矿企业送来的样品
检验,没一种样品的检查数据和类型都不太一样,只有几个列一样比如:名称,
送交单位,时间等等,其他的有的有光谱啊,有的没有。就需要用户自己定义
和生产新的表,而且还必须在html和数据窗口中把这些表作成很规范的表格。
啊!简直就是要我们给用户做一个“数据窗口生产器”!
求各位高手有没有作过类型的项目,给个建议吧!

...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nboys 2003-08-25
  • 打赏
  • 举报
回复
create table #student
(
学生编号 int identity(1,1) primary key clustered,
姓名 varchar(50)
)

create table #league
(
社团编号 int identity(1,1) primary key clustered,
社团名称 varchar(80)
)

create table #leaguer
(
学生编号 int foreign key references dbo.#student([学生编号]) on delete cascade on update cascade,
社团编号 int foreign key references dbo.#league([社团编号]) on delete cascade on update cascade primary key (学生编号,社团编号)
)

insert into #student values('lxl')
insert into #student values('abc')
insert into #student values('88')
insert into #student values('99')

insert into #league values('体育协会')
insert into #league values('音乐协会')
insert into #league values('美术协会')
insert into #league values('科技协会')
insert into #league values('英语协会')
insert into #league values('计算机协会')

insert into #leaguer values(1,4)
insert into #leaguer values(3,2)
insert into #leaguer values(3,5)
insert into #leaguer values(1,2)
insert into #leaguer values(3,4)
insert into #leaguer values(1,3)
insert into #leaguer values(3,1)
insert into #leaguer values(2,1)
insert into #leaguer values(2,5)

declare @sql varchar(8000),@i int,@sql2 varchar(8000)
select @i=0,@sql = 'select 姓名',@sql2=''
select @i=@i+1,@sql = @sql + ',max(case 社团编号 when '''+cast(社团编号 as varchar(10))+''' then 社团名称 end) [社团名称'+cast(@i as varchar(10))+']'
,@sql2=@sql2+',cast(count(社团名称'+cast(@i as varchar(10))+') as varchar(100))'
from #league
select @sql = @sql+' into #a from (select a.姓名,b.社团编号,b.社团名称 from #student a,#league b,#leaguer c where a.学生编号=c.学生编号 and b.社团编号=c.社团编号) tem group by 姓名'

exec(@sql+' select * from #a union all select ''合计'''+@sql2+' from #a')

go
drop table #leaguer,#student,#league
liuyun2003 2003-08-25
  • 打赏
  • 举报
回复
我看这个问题难的不是对表的处理,而是对生成报表的处理。这个部分要费些脑筋的。
lazulite 2003-08-24
  • 打赏
  • 举报
回复
我是新手,我觉得这个问题你试试编一个中间应用程序来处理
pengdali 2003-08-24
  • 打赏
  • 举报
回复
create table 你的表(姓名 varchar(100),学历 varchar(100),部门 int)
insert 你的表 values('n1','aa',11)
insert 你的表 values('n2','bb',1)
insert 你的表 values('n3','aa',45)
insert 你的表 values('n4','cc',81)
insert 你的表 values('n5','a',11)
insert 你的表 values('n6','aay',561)
insert 你的表 values('n7','a',14)

declare @sql varchar(8000)
set @sql = 'select 部门'
select @sql = @sql + ',sum(case 学历 when '''+学历+''' then 1 else 0 end) ['+学历+'的人数]'
from (select distinct 学历 from 你的表) a

select @sql =@sql+' from 你的表 group by 部门'

exec(@sql)

drop table 你的表
XACZ 2003-08-24
  • 打赏
  • 举报
回复
列变行啊,再仔细分析一下数据库

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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