如表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.   

    SELECT [A].[ID] AS 学生ID, [A].[NAME] AS 姓名, SUM([B].[SCORE]) AS 总成绩
    FROM [A] INNER JOIN [B]
         ON [A].ID = [B].[AID]
    GROUP BY ([A].[ID]), ([A].[NAME])
      

  2.   


    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试过了, 是成功的
      

  3.   


    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
      

  4.   

    帮忙帮到底了,  我想显示表A中的所有内容,即使没有参加考试在新查询出来的表里也有相应的记录.如表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 实现不了??
      怎么回事啊 
    再次谢谢各位了...
      

  5.   

    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这个应该是可以的
      

  6.   


    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