重发一下问题!刚才那个大家都是针对的A表,我的意思是要B表里的数据
注意一下B表里的数据
表A FID  name  sex 
1    小红  女 
2    小刚  男 
3    小刘  女 
4    小明  男 表B 
ID  FID    Score 
1    1      80 
2    2      70 
3    3      90 
5    1      60 
6    2      50 两表通过FID关联 现在我检索表B中 所有人的得分,重复的人名,分数累加 如下 FID  name  sex  Score 
1    小红  女    140(60+80得到的) 
2    小刚  男    120(70+50) 
3    小刘  女    90 
这个sql语句应该如何写呢

解决方案 »

  1.   

    SELECT A.*,SUM(B.Score)AS Score  FROM A JOIN B ON A.FID=B.FID
    GROUP BY A.FID ,A.Name ,A.[sex]
      

  2.   

    select a.*,
           (select sum(Score) from tb where  FID=a.FID)
    from ta a
      

  3.   

    select a.FID , a.name , a.sex , sum(b.Score) Score from a , b where a.FID = b.FID group by a.FID , a.name , a.sex
      

  4.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(我是小F,向高手学习)
    -- Date    :2009-10-19 15:54:23
    -- Version:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[A]
    if object_id('[A]') is not null drop table [A]
    go 
    create table [A]([FID] int,[name] varchar(4),[sex] varchar(2))
    insert [A]
    select 1,'小红','女' union all
    select 2,'小刚','男' union all
    select 3,'小刘','女' union all
    select 4,'小明','男'
    --> 测试数据:[B]
    if object_id('[B]') is not null drop table [B]
    go 
    create table [B]([ID] int,[FID] int,[Score] int)
    insert [B]
    select 1,1,80 union all
    select 2,2,70 union all
    select 3,3,90 union all
    select 5,1,60 union all
    select 6,2,50
    --------------开始查询--------------------------
    select 
      a.*,b.Score as Score 
    from 
      a 
    join 
     (select fid,sum(score) as Score from b group by fid) b 
    on 
      a.FID=b.FID  ----------------结果----------------------------
    /* FID         name sex  Score
    ----------- ---- ---- -----------
    1           小红   女    140
    2           小刚   男    120
    3           小刘   女    90(3 行受影响)
    */
      

  5.   


    select a.FID , a.name , a.sex , sum(b.Score) Score from a , b 
    where a.FID = b.FID 
    group by a.FID , a.name , a.sex 
      

  6.   

    create table a(FID int, name varchar(10), sex varchar(10))
    insert into a values(1 ,   '小红' , '女') 
    insert into a values(2 ,   '小刚' , '男') 
    insert into a values(3 ,   '小刘' , '女') 
    insert into a values(4 ,   '小明' , '男') 
    create table b(ID int, FID int,   Score int)
    insert into b values(1 ,   1 ,     80 )
    insert into b values(2 ,   2 ,     70 )
    insert into b values(3 ,   3 ,     90 )
    insert into b values(5 ,   1 ,     60 )
    insert into b values(6 ,   2 ,     50 )
    goselect a.FID , a.name , a.sex , sum(b.Score) Score from a , b where a.FID = b.FID group by a.FID , a.name , a.sexdrop table a , b/*
    FID         name       sex        Score       
    ----------- ---------- ---------- ----------- 
    1           小红         女          140
    2           小刚         男          120
    3           小刘         女          90(所影响的行数为 3 行)
    */
      

  7.   

    select b.FID,a.Name,a.sex,sum(b.Score) from 表B b
    Inner join 表A a on b.FID=a.FID
      

  8.   

    1 小? 女 140
    2 小? 男 120
    3 小? 女 90
    4 小明 男 NULL按上次那个写法,有个分数NULL的记录
    这个我倒是可以自己解决,就是感觉不是那么直接,呵呵!
      

  9.   

    --> 测试数据:@tb1
    declare @tb1 table([FID] int,[name] varchar(4),[sex] varchar(2))
    insert @tb1
    select 1,'小红','女' union all
    select 2,'小刚','男' union all
    select 3,'小刘','女' union all
    select 4,'小明','男'
    --> 测试数据:@tb2
    declare @tb2 table([ID] int,[FID] int,[Score] int)
    insert @tb2
    select 1,1,80 union all
    select 2,2,70 union all
    select 3,3,90 union all
    select 5,1,60 union all
    select 6,2,50 
    select t1.*,  Score=sum(score)  from @tb1 t1 join @tb2 t2 on t1.fid=t2.fid 
    group by t1.fid,t1.name,t1.sex/*
    FID         name sex  Score
    ----------- ---- ---- -----------
    1           小红   女    140
    2           小刚   男    120
    3           小刘   女    90(3 行受影响)
    */
      

  10.   

    select b.FID,a.Name,a.sex,sum(b.Score) from B b
    Inner join A a on b.FID=a.FID group by b.FID,a.Name,a.sex