两个表A,B
A中有:
  ID,NAME,AGE等一些信息。B中有:
  ID(该ID与A中对应),pmoney, 还有别的一些字段,
  B中存储的记录会有多条ID一样的,(其实是个主从表)
我想在统计时,有A中的信息,再加上B中同一个ID的pmoney字段的总和。这个SQL要怎么写?谢谢!

解决方案 »

  1.   

    select A.*,B.sum(pmoney) as pmondy where A.ID=B.ID
      

  2.   

    select A.*,B.sum(pmoney) as pmondy where A.ID=B.ID group by B.ID
      

  3.   

    select A.*,B.sum(pmoney) as Pmondy from A inner join b on (a.id=b.id) group by b.id
      

  4.   

    select a.id,a.name,sum(moeny) as moeny from t0731 as a,t0732 as b where a.id=b.id group by a.id,a.name
    以上的b.sum(pmoney)是错误的
      

  5.   

    xiehua822(xiehua) :
      t0731,t0732是什么东西?
    我按其它朋友告诉我的,还是有错的,老是说A表中有某个字段不包含在GROUP BY子句中。
      

  6.   

    两个表A,B
    A中有:
      ID,NAME,AGE等一些信息。B中有:
      ID(该ID与A中对应),pmoney, 还有别的一些字段,
      B中存储的记录会有多条ID一样的,(其实是个主从表)
    我想在统计时,有A中的信息,再加上B中同一个ID的pmoney字段的总和。这个SQL要怎么写?谢谢!
    select a.* , t.summoney
    from 
    a inner join
    (select a.id as id, sum(b.money) as summoney from a inner join b on a.id = b.id group by a.id) as t
    on a.id = t.id
      

  7.   

    DWGZ() 
    谢谢,您的可以的,但是我想加查询条件怎么加?
      

  8.   

    有个问题,就是我想把两个表中的有关字段拿出来显示,但这样一做的话GROUP BY中要写上所有要显示的字段了,而这样子的话显示出来不会把某个ID的MONEY统计了,而是有多少个ID显示多少个记录了。怎么解决这个问题?
      

  9.   

    select a.* , t.summoney
    from 
    a inner join
    (select a.id as id, sum(b.money) as summoney from a inner join b on a.id = b.id group by a.id) as t
    on a.id = t.id这个是正解,条件就直接加啊select a.* , t.summoney
    from 
    a inner join
    (select a.id as id, sum(b.money) as summoney from a inner join b on a.id = b.id group by a.id) as t
    on a.id = t.id  where a.id=你的条件
    如果用Tquery控件sql语句这样写
    sqlStr='select a.* , t.summoney
    from 
    a inner join
    (select a.id as id, sum(b.money) as summoney from a inner join b on a.id = b.id group by a.id) as t
    on a.id = t.id where a.id=' +''''变量'''';
      

  10.   

    select * from a left join (select Id,sum(pMoney) pMoney from b group by Id) on a.Id= b.id
      

  11.   

    上面几位朋友的都是对的。但是还有个问题是这样的:
    在不加WHERE条件时,是可以了。但加上了WHERE条件后就变成了,有多少个记录就显示多少个,而不是把MONEY统计汇总了。
    如:
    0001  jack   .. .. .. 2.00
    0001  jack  .. .. ... 1232.00
    0002  jayce . . . .   33.21
    0001  jack   .. .. .. 54.34
    我是想让它变成:
    0001  jack  . .. . .. 1288.34
    0002  jayce .. . . .. 33.21请问要怎么改呢?我肯定重分感谢。
      

  12.   

    select distinct a.id,a....,sum(b.pMoney) as num
    from A a left join 
    B b on a.id=b.id 
    where 条件
    group by a.id,a....
    order by a.id,a....;
    如果你的其他字段确实有不相同的值,当然是多条记录的,否则应该是你想要的结果!
      

  13.   

    select a.id,a.name,a.age,sum(b.pmoney) from test a,test1 b where a.id=b.id group by a.id,a.name,a.age