表1)
姓名,年龄,地址,班级(基本资料)
(表2)
姓名,语文,数学(每月测验成绩)
姓名是一样的,表2中的成绩有同一人有多次记录,现在做一个按班级查询的汇总表,要求报表中有,基本资料,语文,数学总成线,这样的SQL语句如何写,实在不知如何下手
姓名,年龄,地址,班级(基本资料)
(表2)
姓名,语文,数学(每月测验成绩)
姓名是一样的,表2中的成绩有同一人有多次记录,现在做一个按班级查询的汇总表,要求报表中有,基本资料,语文,数学总成线,这样的SQL语句如何写,实在不知如何下手
t1.班级,sum(t2.语文) as 语文总成绩,sum(t2.数学) as 数学总成绩
from
table1 t1
join
table2 t2 on t1.姓名=t2.姓名
group by t1.班级
如果是这个样子的话,其实就一个连接,如下:
declare @Info table(
姓名 varchar(24)
,年龄 tinyint
,地址 varchar(100)
,班级 int)
declare @Score table(
姓名 varchar(24)
,语文 int
,数学 int) insert into @Info
values('a',23,'aa',1)
insert into @Info
values('b',24,'bb',2)
insert into @Info
values('c',24,'bb',1)insert into @Score
values('a',89,78)
insert into @Score
values('a',89,78)insert into @Score
values('b',34,78)
insert into @Score
values('c',34,78)
insert into @Score
values('c',34,78)
select b.姓名,b.年龄,b.地址,b.班级,sum(a.语文) as 语文,sum(a.数学) as 数学
from @Score as a
inner join @Info as b
on a.姓名=b.姓名
group by b.姓名,b.年龄,b.地址,b.班级
order by b.班级 asc
left join
(select 姓名 bname,sum(isnull(语文,0))语文总分,sum(isnull(数学,0))数学总分 from t2 group by name)B
on a.姓名=b.bname 没有测试,大致是这样的。
第三行的group by name 应该是group by 姓名