如表A (ID,姓名,性别,年龄)
1 张三 男 20
2 李四 男 19 表B (ID,表AID,分数,考试时间)
1 1 90 2007-5-5
2 1 80 2008-2-2
3 1 70 2008-3-3
4 2 60 2008-2-2要实现的查询结果是:
(学生ID,姓名,总成绩)
1 张三 240
2 李四 60只能用一条Sql语句实现求解 .. 自己是在搞不定了
1 张三 男 20
2 李四 男 19 表B (ID,表AID,分数,考试时间)
1 1 90 2007-5-5
2 1 80 2008-2-2
3 1 70 2008-3-3
4 2 60 2008-2-2要实现的查询结果是:
(学生ID,姓名,总成绩)
1 张三 240
2 李四 60只能用一条Sql语句实现求解 .. 自己是在搞不定了
FROM [A] INNER JOIN [B]
ON [A].ID = [B].[AID]
GROUP BY ([A].[ID]), ([A].[NAME])
select name, sum(NUM) as num
from
(select a.id,a.name,b.num from aaa a,bbb b where a.id=b.aid) as a
group by a.NAME试过了, 是成功的
SELECT [A].ID as 学生ID,[A].姓名,sum([B].分数) as 总成绩
from [A] inner join [B] on [A].ID=[B].表AID
group by [A].ID,[A].姓名
order by [A].ID
1 张三 男 20
2 李四 男 19
3 王五 男 33
表B (ID,表AID,分数,考试时间)
1 1 90 2007-5-5
2 1 80 2008-2-2
3 1 70 2008-3-3
4 2 60 2008-2-2 要实现的查询结果是:
(学生ID,姓名,总成绩)
1 张三 240
2 李四 60
3 王五 0用left join 实现不了??
怎么回事啊
再次谢谢各位了...
from [A] inner join [B] on [A].ID=[B].表AID
group by [A].ID,[A].姓名
order by [A].ID这个应该是可以的
SELECT [A].ID as 学生ID,[A].姓名,总成绩 = case when sum([B].分数) is null then 0 else sum([B].分数) end
from [A] left join [B] on [A].ID=[B].表AID
group by [A].ID,[A].姓名
order by [A].ID