现在我有三个表。。oilstationteam a,oilpost_stat b,backcandaystat c.现在要取三个表里的数据(取三个字段即可)a.gowordnum,b.liter_total1,c.oilbackliter.三个表对应的其中三个字段要相等才可以:a.nodeno=b.nodeno=c.nodeno,convert(char(10),a.opedate,111)=convert(char(10),b.opedate,111)=convert(char(10),c.accountdate,111).但其中的a表,,是要对相同的oilno统计一个数的和sum(a.gowordnum)
    我是这样子写的。。
select a.gowordnum,b.liter_total1,c.oilbackliter from oilstationteam a,oilpost_stat b,backcandaystat c 
where a.nodeno=b.nodeno and a.nodeno=c.nodeno and convert(char(10),a.opedate,111)=convert(char(10),b.opedate,111) and convert(char(10),a.opedate,111)=convert(char(10),c.accountdate,111) and a.oilno=b.oilno and a.oilno=c.oilno and a.nodeno='14000697' and convert(char(10),a.opedate,111)='2006/10/14'
得结果
 gowordnum          liter_total1    oilbackliter
 ------------------ --------------- ---------------
            1514.64         2802.97           40.00
            1328.33         2802.97           40.00
            1199.98         1179.98           20.00但这不是我想要的。我想要的应是那个40的。。1514.64+1328.33的和。。即应是
 gowordnum          liter_total1    oilbackliter
 ------------------ --------------- ---------------
            2842.97         2802.97           40.00
            1199.98         1179.98           20.00
这才是对的。请高人给解决下。。多谢。

解决方案 »

  1.   

    对于复杂的结构
    我一般采用算法分析,而不是单纯的SQL语句~
      

  2.   

    //改为如下:
    Select gowordnum=sum(a.gowordnum),b.liter_total1,c.oilbackliter 
    from oilstationteam a,oilpost_stat b,backcandaystat c 
    where a.nodeno=b.nodeno and a.nodeno=c.nodeno and
          a.oilno=b.oilno and a.oilno=c.oilno and a.nodeno='14000697' and 
           convert(char(10),a.opedate,111)='2006/10/14' and
           Datediff(day,a.opedate,b.opedate)=0 and  Datediff(day,a.opedate,c.accountdate)=0
     group by b.liter_total1,c.oilbackliter
      

  3.   

    要写的话太多,麻烦,我就在你上面加点东西就行
    这是你写的:
    select a.gowordnum,b.liter_total1,c.oilbackliter 
    into #t    //加一个一行 ,临时表
    from oilstationteam a,oilpost_stat b,backcandaystat c 
    where a.nodeno=b.nodeno and a.nodeno=c.nodeno and convert(char(10),a.opedate,111)=convert(char(10),b.opedate,111) and convert(char(10),a.opedate,111)=convert(char(10),c.accountdate,111) and a.oilno=b.oilno and a.oilno=c.oilno and a.nodeno='14000697' and convert(char(10),a.opedate,111)='2006/10/14'
    这个时候如果你select *From #t 就会得到你上面不要的那个结果,下面再处理一下
    select sum(gowordnum),sum(liter_total1),oilbackliter from #t group by oilbackliter
    就得到你要的结果了,当然了,我这是偷懒的办法,只是由此可以看出,你上面的SQL修改修改也可以实现这样的功能
      

  4.   

    select sum(gowordnum) as gowordnum,sum(liter_total1) as liter_total1,oilbackliter from #t group by oilbackliter
    字段名忘了加,怕你弄错
      

  5.   

    把得出的结果放到#Temp表里面.加多一句 select sum(gowordum) from #Temp group by oilbackliter