如何用SQL语句从a表和b表中提取出B班的学生成绩组成c表?

a b c
学号 语文 学号 数学 学号 语文 数学
A001 89 A001 99 B001 88
A002 A002 B002 88 100
A003 70 B001 88 B003 85
B001 B002 100
B002 88
B003 85

select 'A001' 学号,'89' 语文 into a union

select 'A002' ,'' union

select 'A003' ,'70' union

select 'B001' ,'' union

select 'B002' ,'88' union

select 'B003' ,'85' 

select 'A001' 学号,'99' 数学 into b union

select 'A002' ,'' union

select 'B001' ,'88' union

select 'B002' ,'100'

select a.学号,isnull((case when a.语文='' then 0 else a.语文 end),0) 语文,

isnull((case when b.数学='' then 0 else b.数学 end),0) 数学 from a

full join b on a.学号=b.学号

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-18
insert into c
select b.学号,a.语文,b.数学
from a,b
where a.学号=b.学号 and LEFT(b.学号,1)=B追问

这样C表中好象只能有B001和B002,没有B003

追答

那就要问你为何A表中B班3号学生没有在B表出现、就算是数学成绩为0或者空、也得跟B表中A002一样、你录入数据不规矩、这样是不对的、

第2个回答  2012-03-20

insert into c

(select t.no,sum(t.score1),sum(t.score2)

from (

select a.no,a.score1,a.score2

from a 

union all

select b.no,b.score1,b.score2

from b

 )t

where substr(t.no,1,1)='B'

group by t.no

order by t.no);