表1:vehicleregister   字段:vehiclenumber,bankaccount(表2外键) 如:京A00001,123456
表2:bankaccount       字段:bankaccount(主键),theMoney         如:123456,800
表3:pikerecord        字段:vehiclenumber,totalmoney             如:京A00001,10;  京A00001,20现在我想得到的是:
vehiclenumber,bankaccount,theMoney      sum(totalmoney)
京A00001        123456         800               30
需要得到这3个字段,其中表3的vehiclenumber,有许多相同的记录。如:京A00001,10;  京A00002,20等。

解决方案 »

  1.   

    select t1.vehiclenumber, t1.bankaccount, t2.theMoney, sum(t3.totalmoney)
    from   vehicleregister t1,
           bankaccount t2,
           pikerecord t3
    where  t1.bankaccount   = t2.bankaccount
    and    t1.vehiclenumber = t3.vehiclenumber(+)
    group by t1.vehiclenumber, t1.bankaccount, t2.theMoney;
      

  2.   

    select t1.vehiclenumber, t1.bankaccount, t2.theMoney, sum(t3.totalmoney)
    from   vehicleregister t1,
           bankaccount t2,
           pikerecord t3
    where  t1.bankaccount   = t2.bankaccount(+)
    and    t1.vehiclenumber = t3.vehiclenumber(+)
    group by t1.vehiclenumber, t1.bankaccount, t2.theMoney;
      

  3.   

    谢谢楼上的,你的sql很正确。现在又有一需求。能得出theMoney -sum(totalmoney) 
    的差吗:vehiclenumber,bankaccount,theMoney      sum(totalmoney) cha
    京A00001        123456        800              30          770
      

  4.   

    select t1.vehiclenumber, t1.bankaccount, t2.theMoney, sum(t3.totalmoney), t2.theMoney - nvl(sum(t3.totalmoney),0)
    from   vehicleregister t1,
           bankaccount t2,
           pikerecord t3
    where  t1.bankaccount   = t2.bankaccount
    and    t1.vehiclenumber = t3.vehiclenumber(+)
    group by t1.vehiclenumber, t1.bankaccount, t2.theMoney;