日期:2014-05-19  浏览次数:20609 次

这样的功能能不能实现?语句怎么写?
A表:
年月 院系 专业 语文选修人数 数学人数 法语人数 物理人数
200701 电子系 电子工程  65      58 52 95
200701 电子系 微电子  25      36 52 52
200701 自动化系 人工智能  12      85 12 10
200701 自动化系 计算机图形 58      25 21 20
200701 计算机系 人工智能  21      15 21 30
200701 计算机系 计算机图形85      65 25 68
B表:
年月 院系 年级 哲学选修人数 古代汉语 物理学史
200701 电子系 一年级 21 52 58     85
200701 电子系 二年级 10 10 10     58  
200701 自动化系 一年级 10 10 20     36
200701 自动化系 三年级 65 85 65     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就可以使用触发器的说

------解决方案--------------------
暈,看看頭暈..