--DROP TABLE A
CREATE TABLE A
(
id int primary key identity(1,1),
score decimal(18,2)
)--DROP TABLE B
CREATE TABLE B
(
id int primary key identity(1,1),
pid int ,  --A表的ID
math decimal(18,2),
english decimal(18,2)
)SELECT * FROM A
INSERT INTO A 
VALUES(50)SELECT * FROM B
INSERT INTO B 
VALUES(1,5,5)
INSERT INTO B 
VALUES(1,5,5)
INSERT INTO B 
VALUES(1,15,15)--想获得子表中math总分
想获得SQL语句取得以下结果
id          score    math
----------- ---------------------------------------
1           50.00    ?

解决方案 »

  1.   


    select #a.id,#a.score,SUM(#b.math) as math 
    from #A,#B
    where #A.id = #B.pid
    group by #A.id,#A.score
      

  2.   

    select A.ID,A.Score,SUM(math)as math  from A inner Join B on A.id=B.pid group by A.id,A.score
      

  3.   

    select 
    a.ID,a.score,
    sum(math) as math
    from A
    inner join B on a.id=b.pid
    group by a.ID,a.score
      

  4.   

    果真都是高手,多谢。都使用了Group By!
    能不能挑战一下,不使用Group By.
      

  5.   


    group by a.ID,a.score ,实际应用的时候字段很多。挺麻烦,连了好几张表。
      

  6.   

    select 
    a.ID,a.score,
    isnull((select sum(math) FROM B WHERE pid=a.ID),0) as math
    from A
    当B表不存在对应记录时显示为0
      

  7.   

    8楼厉害, 我知道有这么一种写法,一下子想不起来了。膜拜等结贴了,分多给你点。select 
    a.ID,a.score,
    isnull((select sum(math) FROM B WHERE pid=a.ID),0) as math
    from A