表1(合同表):        表2(合同明细表):       表3(出货单):
  公司   合同号     合同号   明细号   单价    合同号    合同明细   出货数量
   AA      A    |     A      a1      20   |    A         a1        50
   BB      B    |     A      a2      30   |    A         a2        80
                |     B      b1      10   |    B         b1        60
                |     B      b2      40   |    B         b2        20通过以上3张表得到下面的表:
表4(发货统计表):
公司名称     合同号     出货数量     出货金额   
  AA           A         130         3400
  BB           B         150         1400
        合计:            280         4800
     
要得到表4请问应该怎么办,这样的存储过程应该怎样写?请各位高手指点!  
  
  

解决方案 »

  1.   

    我sql写的不好,效率很低select 公司,表3.合同号,sum(单价*出货数量) from 表3 join 表2 on 表3.合同号=表2.合同号 and 表3.明细号=表2.明细号
    join 表1 on 表3.合同号=表1.合同号 group by 公司,表3.合同号
      

  2.   

    我的sql写的不好,效率很低,sorry以你上面的表调试通过select 公司,表3.合同号,sum(单价*出货数量) as 总价 from 表3 join 表2 on 表3.合同号=表2.合同号 and 表3.明细号=表2.明细号
    join 表1 on 表3.合同号=表1.合同号 group by 公司,表3.合同号
      

  3.   

    先创建表4,然后一个下面的sql语句就得到表4了insert into 表4
    select a.公司,max(b.合同号),sum(c.数量),sum(c.数量*b.单价)
    from 表1 a,表2 b,表3 c
    where a.合同号=b.合同号 and b.合同号=c.合同号 and b.明细号=c.明细号
    group by a.公司要得到合计,在写grid时用sum=sum+sum(c.数量)(金额也是一样)在填到grid中就可以啦
      

  4.   

    如果一个公司有几个合同则group by后面要用group by a.公司 ,b.合同号。
    前面的select a.公司,max(b.合同号)也要改为select a.公司,b.合同号
    如果还要排序可以在最后加order by 不过order by的后面必须是select后面的几个
      

  5.   

    少了个字段,更加sorryselect 公司,表3.合同号,sum(出货数量)as 出货数量,sum(单价*出货数量) as 总价 
    from 表3 join 表2 on 表3.合同号=表2.合同号 and 表3.明细号=表2.明细号
    join 表1 on 表3.合同号=表1.合同号 group by 公司,表3.合同号
      

  6.   

    表1(合同表):        表2(合同明细表):       表3(出货单):
      公司   合同号     合同号   明细号   单价    合同号  明细   出货数  业务员
       AA      A    |     A      a1      20   |    A     a1     50     XXX 
       BB      B    |     A      a2      30   |    A     a2     80     XXX
       CC      C    |     B      b1      10   |    B     b1     60     XXX 
       DD      D    |     C      c1      40   |    C     c1     50     YYY
                    |     C      c2      20   |    C     c2     20     YYY
                          D      d1      35   |    D     d1     20     YYY通过以上3张表得到下面的表:
    表4(发货统计表):
    业务员  公司名称     合同号     出货数量     出货金额   
    ---------------------------------------------------
      XXX    AA           A         130         3400
      XXX    BB           B          60          600
      小计:                         190         4000
    ---------------------------------------------------
      YYY    CC           C          70         2400    
      YYY    CC           D          20          700
      小计:                          90          3100
    ---------------------------------------------------
      合计:                          280         7100这种情况有该如何呢?用COMPUTE BY 吗?怎样写代码?
      

  7.   

    insert into 表4select a.公司,b.合同号,c.业务员,sum(c.数量),sum(c.数量*b.单价)from 表1 a,表2 b,表3 cwhere a.合同号=b.合同号 and b.合同号=c.合同号 and b.明细号=c.明细号group by a.公司,b.合同号,c.业务员这样就ok拉