首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样的功能能不能实现?语句如何写

2012-01-26 
这样的功能能不能实现?语句怎么写?A表:年月院系专业语文选修人数数学人数法语人数物理人数200701电子系电

这样的功能能不能实现?语句怎么写?
A表:
年月院系专业语文选修人数数学人数法语人数物理人数
200701电子系电子工程 65     585295
200701电子系微电子 25     365252
200701自动化系人工智能 12     851210
200701自动化系计算机图形 58     252120
200701计算机系人工智能 21     152130
200701计算机系计算机图形85     652568
B表:
年月院系年级哲学选修人数古代汉语物理学史
200701电子系一年级215258     85
200701电子系二年级101010     58  
200701自动化系一年级101020     36
200701自动化系三年级658565     25
C表:
年月类别文科选修人数理科选修人数哲学古代汉语物理学史
200701总计
200701电子工程
200701微电子
。。。。。。
200701一年级
……
200701其他
文科选修人数=语文选修人数+法语人数
理科选修人数=数学人数+物理人数
我想从A表和B表的数据,按到现在C表的这种顺序自动插入到C表,可以吗?


[解决办法]
create table A(年月 varchar(10), 院系 varchar(20), 专业 varchar(20), 语文选修人数 int, 数学人数 int, 法语人数 int, 物理人数 int)
insert A select '200701 ', '电子系 ', '电子工程 ',65,58,52,95
union all select '200701 ', '电子系 ', '微电子 ',25,36,52,52
union all select '200701 ', '自动化系 ', '人工智能 ',12,85,12,10
union all select '200701 ', '自动化系 ', '计算机图形 ',58,25,21,20
union all select '200701 ', '计算机系 ', '人工智能 ',21,15,21,30
union all select '200701 ', '计算机系 ', '计算机图形 ',85,65,25,68
go

create table B(年月 varchar(10), 院系 varchar(20), 年级 varchar(20), 哲学选修人数 int, 古代汉语 int, 物理学史 int)
insert B select '200701 ', '电子系 ', '一年级 ',21,52,58
union all select '200701 ', '电子系 ', '二年级 ',10,10,10
union all select '200701 ', '自动化系 ', '一年级 ',10,10,20
union all select '200701 ', '自动化系 ', '三年级 ',65,85,65
go

create table C(年月 varchar(20), 类别 varchar(20), 文科选修人数 int, 理科选修人数 int, 哲学 int, 古代汉语 int, 物理学史 int)


insert C select * from
(
select 年月, 专业= '总计 ', 文科选修人数=sum(文科选修人数), 理科选修人数=sum(理科选修人数),
哲学选修人数=sum(哲学选修人数), 古代汉语=sum(古代汉语), 物理学史=sum(物理学史)
from
(
select 年月, 文科选修人数=isnull(语文选修人数, 0)+isnull(法语人数, 0), 理科选修人数=isnull(数学人数, 0)+isnull(物理人数, 0),
哲学选修人数=0, 古代汉语=0, 物理学史=0
from A
union all
select 年月, 文科选修人数=0, 理科选修人数=0, 哲学选修人数, 古代汉语, 物理学史
from B
)tmp group by 年月

union all

select 年月, 专业, 文科选修人数=sum(isnull(语文选修人数, 0)+isnull(法语人数, 0)), 理科选修人数=sum(isnull(数学人数, 0)+isnull(物理人数, 0)),
哲学选修人数=0, 古代汉语=0, 物理学史=0
from A
group by 年月, 专业

union all

select 年月, 年级, 文科选修人数=0, 理科选修人数=0,
哲学选修人数=sum(哲学选修人数), 古代汉语=sum(古代汉语), 物理学史=sum(物理学史)
from B
group by 年月, 年级
)tmp
[解决办法]
access数据库中是没有触发器的.你只能用前台语言定时扫描表的方法.来做出相应处理....
[解决办法]
这么小的数据库 没怎么研究过 纯支持额
sql就可以使用触发器的说

[解决办法]
暈,看看頭暈..

热点排行